zhuxinbo 4 éve
szülő
commit
0946e25a66

+ 5 - 5
src/components/layouts/TabLayout.vue

@@ -166,12 +166,12 @@
         }
 
         // 头条的批量处理tab标签
-        console.log(this.activePage,this.linkList)
-        if(!this.linkList.includes('/modules/BatchCreate/newGroup')&&!this.linkList.includes('/modules/BatchCreate/newPlan')&&!this.linkList.includes('/modules/BatchCreate/newCreate')){
-          localStorage.removeItem("planInfo")
-          localStorage.removeItem("groupInfo")
+        // console.log(this.activePage,this.linkList)
+        // if(!this.linkList.includes('/modules/BatchCreate/newGroup')&&!this.linkList.includes('/modules/BatchCreate/newPlan')&&!this.linkList.includes('/modules/BatchCreate/newCreate')){
+        //   localStorage.setItem("planInfo",'')
+        //   localStorage.setItem("groupInfo",'')
           
-        }
+        // }
         // if(this.linkList.includes('/modules/BatchCreate/newDirectedPackage')){
         //   localStorage.setItem("accountInfo",'')
           

+ 11 - 9
src/views/modules/BatchCreate/TouTiaoBatch.vue

@@ -18,10 +18,10 @@
                         {{currentPlan.name }}	 <a-icon type="close" @click="clearPlan" />
                     </a-tag>
                 </a-tab-pane>
-                <a-button type='primary'  slot="tabBarExtraContent" @click="goBatch" >
+                <!-- <a-button type='primary'  slot="tabBarExtraContent" @click="goBatch" >
                    + 头条批量创建
-                </a-button>
-                <!-- <a-button type='primary'  slot="tabBarExtraContent" @click="goBatch" v-if="tabkey=='group'">
+                </a-button> -->
+                <a-button type='primary'  slot="tabBarExtraContent" @click="goBatch" v-if="tabkey=='group'">
                    + 头条批量创建
                 </a-button>
                 <a-button type='primary'  slot="tabBarExtraContent" @click="createPlan" v-if="tabkey=='plan'">
@@ -29,7 +29,7 @@
                 </a-button>
                 <a-button type='primary'  slot="tabBarExtraContent" @click="createIdea" v-if="tabkey=='idea'">
                    + 新建创意
-                </a-button> -->
+                </a-button>
 
             </a-tabs>
         </div>
@@ -819,12 +819,14 @@ export default {
         createIdea(){
             if(this.accountID){
                 if(this.currentPlan.name){
-                    console.log(this.currentPlan)
-                    this.$router.push('/modules/BatchCreate/newCreate');
-                    let planInfo=JSON.stringify(this.currentGroup);
+                    // console.log(this.currentPlan)                  
+                    let groupInfo=JSON.stringify(this.currentGroup);
                     localStorage.setItem('groupInfo',groupInfo)
+                    let planInfo=JSON.stringify([this.currentPlan]);
+                    localStorage.setItem('planInfo',planInfo)
+                    this.$router.push('/modules/BatchCreate/newCreate');
                 }else if(!this.currentPlan.name){
-                    console.log('hhhh    去新建或者选择已有');
+                    // console.log('hhhh    去新建或者选择已有');
                     this.$router.push('/modules/BatchCreate/selectPlanList');
                 }
             }else {
@@ -1507,7 +1509,7 @@ export default {
                 }
             })
         })
-        this.$bus.$emit('remove', '/modules/BatchCreate/TouTiaoBatch')
+       
 
     },
     filters: {

+ 48 - 35
src/views/modules/BatchCreate/components/material.vue

@@ -62,19 +62,24 @@
                       <!-- <upload-to-ali v-model="item.imageUrl" :customDomain="customDomain" preview :region="region"
                         :bucket="bucket" :accept="acceptImage" :size="102400" :accessKeyId="accessKeyId"
                         :accessKeySecret="accessKeySecret"></upload-to-ali> -->
-                      <a @click="getImageList(item)" v-if="item.imageUrl==''">选择图片</a>
-                      <img :src="item.imageUrl" alt="" v-else style="width:120px">
+                      
+                      
+                      <a @click="getImageList(item)" >{{item.imageUrl==''?'选择图片':'更改图片'}}</a>
+                      <br />
+                      <img :src="item.imageUrl" alt="图片加载失败!"  style="width:120px" v-if="item.imageUrl">
                     </a-form-item>
 
                     <a-form-item label="创意标题" :labelCol="labelCol" :wrapperCol="wrapperCol"
                       v-if="creativeType == 'customCreativity'">
-                      <a-input v-model="item.text" style="width:400px" class="rending" @change="judge(item)"></a-input>
+                      <a-input v-model="item.title " style="width:400px" class="rending" @change="judge($event,item)"></a-input>
                     </a-form-item>
                     <a-form-item label="动态词包" :labelCol="labelCol" :wrapperCol="wrapperCol"
                       v-if="creativeType == 'customCreativity'">
-                      <a-tag v-for="(itemTag,indexTag) of tags" :key="indexTag" v-show="indexTag<item.many"
+                      <!-- {{tags}} -->
+                      <!-- v-show="indexTag<item.many" -->
+                      <a-tag v-for="(itemTag,indexTag) of tags" :key="indexTag"  v-show="indexTag<item.many"
                         @click="getChange(item,itemTag,index)">{{itemTag.name}}</a-tag>
-                      <span @click="showElseClick(item)">{{item.showElse?"更多":"收起"}}</span>
+                      <span @click="showElseClick(item)" class="moreTags">{{item.showElse?"更多":""}}</span>
                     </a-form-item>
 
                   </div>
@@ -91,7 +96,7 @@
       <a-button @click="addTitle" class="row-item">添加创意标题</a-button>
       <br />
       <div v-for="(item,index) of titleData" :key="index">
-        <a-input style="width:55%;margin-bottom:20px" v-model="item.text" class="rending-all" @change="judge(item)">
+        <a-input style="width:55%;margin-bottom:20px" v-model="item.title" class="rending-all" @change="judge($event,item)">
         </a-input>
         <a-icon type="delete" style="margin-left:20px;cursor: pointer;" v-show="titleData.length>1"
           @click="tetleDetele(index)" />
@@ -321,6 +326,7 @@
           }
         },
         isImg:false,
+        accountInfo:{},
       }
     },
     methods: {
@@ -328,7 +334,7 @@
         console.log(this.isImg)
         this.ipagination.current = page
         var params = {}
-        params.accountId = "1649600126891015"
+        params.accountId = this.accountInfo.value
         params.pageSize = this.ipagination.pageSize
         params.pageNo = page
         if (this.time.length > 0) {
@@ -338,9 +344,9 @@
         if ((this.materialType == 'CREATIVE_IMAGE_MODE_VIDEO' || this.materialType ==
           'CREATIVE_IMAGE_MODE_VIDEO_VERTICAL')&&!this.isImg) {
           if (this.materialType == 'CREATIVE_IMAGE_MODE_VIDEO') {
-            params.type = 2
-          } else {
             params.type = 1
+          } else {
+            params.type = 2
           }
           this.showVideoList('/bytedance/batch/getVideoList', params)
         } else if(this.isImg){
@@ -357,7 +363,7 @@
 
         this.isImg=true;
         var params = {}
-        params.accountId = '1649600126891015'
+        params.accountId = this.accountInfo.value
         params.pageSize = this.ipagination.pageSize
         params.pageNo = this.ipagination.current
         if (this.time.length > 0) {
@@ -399,7 +405,7 @@
         this.isImg=false
         this.ipagination.current = 1
         var params = {}
-        params.accountId = '1649600126891015'
+        params.accountId = this.accountInfo.value
         params.pageSize = this.ipagination.pageSize
         params.pageNo = this.ipagination.current
         if (this.time.length > 0) {
@@ -409,9 +415,9 @@
         if (this.materialType == 'CREATIVE_IMAGE_MODE_VIDEO' || this.materialType ==
           'CREATIVE_IMAGE_MODE_VIDEO_VERTICAL') {
           if (this.materialType == 'CREATIVE_IMAGE_MODE_VIDEO') {
-            params.type = 2
-          } else {
             params.type = 1
+          } else {
+            params.type = 2
           }
 
           this.showVideoList('/bytedance/batch/getVideoList', params)
@@ -435,18 +441,20 @@
         })
       },
       judge(item) {
+        // console.log(item)
         var re = /{(.*?)}/g
         var array = []
         var temp
-        while ((temp = re.exec(item.text))) {
+        while ((temp = re.exec(item.title))) {
           array.push(temp[1])
         }
-        console.log(array)
-        item.countTag = array.length
+        // console.log(array)
+        item.countTag = array.length;
+        // console.log(item.countTag )
       },
       getChange(item, tag, index) {
         this.judge(item)
-        if (item.text == '') {
+        if (item.title == '') {
           item.countTag = 0
         }
         if (item.countTag >= 2) {
@@ -473,7 +481,7 @@
           if (restoreTop > 0) {
             node.scrollTop = restoreTop
           }
-          item.text = node.value
+          item.title = node.value
           item.creativeWordIds.push(tag.creative_word_id)
           node.focus()
           node.selectionStart = startPos + v.length
@@ -482,13 +490,13 @@
           //OTHER
           node.value += v
           item.creativeWordIds.push(tag.creative_word_id)
-          item.text = node.value
+          item.title = node.value
           node.focus()
         }
       },
       getChangeAllTitle(item, tag, index) {
         this.judge(item)
-        if (item.text == '') {
+        if (item.title == '') {
           item.countTag = 0
         }
         if (item.countTag >= 2) {
@@ -514,23 +522,24 @@
           if (restoreTop > 0) {
             node.scrollTop = restoreTop
           }
-          item.text = node.value
+          item.title = node.value
           node.focus()
           node.selectionStart = startPos + v.length
           node.selectionEnd = startPos + v.length
         } else {
           //OTHER
           node.value += v
-          item.text = node.value
+          item.title = node.value
           node.focus()
         }
       },
       showElseClick(item) {
+        console.log(item)
         item.showElse = !item.showElse
         if (!item.showElse) {
           item.many = this.tags.length
         } else {
-          item.many = 3
+          item.many = 5
         }
       },
       materialTypeChange() {
@@ -605,13 +614,13 @@
             ImageMode: type,
             imageUrl: '',
             imageId: '',
-            text: '',
+            title: '',
             creativeWordIds: [],
             vadioUrl: '',
             videoId: '',
             multiple: [],
             countTag: 0,
-            many: 3,
+            many: 5,
             showElse: true
           })
           this.HorizontalLargeImageList = this.HorizontalLargeImageListSmall
@@ -621,7 +630,7 @@
             imageMode: type,
             imageUrl: '',
             imageId: '',
-            text: '',
+            title: '',
             creativeWordIds: [],
             vadioUrl: '',
             videoId: '',
@@ -638,7 +647,7 @@
             imageMode: type,
             imageUrl: '',
             imageId: '',
-            text: '',
+            title: '',
             creativeWordIds: [],
             vadioUrl: '',
             videoId: '',
@@ -655,7 +664,7 @@
             imageMode: type,
             imageUrl: '',
             imageId: '',
-            text: '',
+            title: '',
             creativeWordIds: [],
             vadioUrl: '',
             videoId: '',
@@ -672,7 +681,7 @@
             imageMode: type,
             imageUrl: '',
             imageId: '',
-            text: '',
+            title: '',
             creativeWordIds: [],
             vadioUrl: '',
             videoId: '',
@@ -689,7 +698,7 @@
             imageMode: type,
             imageUrl: '',
             imageId: '',
-            text: '',
+            title: '',
             creativeWordIds: [],
             vadioUrl: '',
             videoId: '',
@@ -707,12 +716,14 @@
         this.HorizontalLargeImageList.splice(index, 1)
       },
       getTags() {
-        // let accountInfo = localStorage.getItem('accountInfo')
+        let accountInfo = localStorage.getItem('accountInfo')
         // console.log(groupInfo)
+        this.accountInfo=JSON.parse(accountInfo)
 
         getAction('/bytedance/batch/creative/words/get', {
-          accountId: '1649600126891015'
+          accountId: this.accountInfo.value
         }).then(res => {
+          console.log(res)
           if (res.code == '0') {
             this.tags = res.creative_word
           } else {
@@ -760,7 +771,7 @@
         console.log(n)
         if (n.length > 0) {
           var params = {}
-          params.accountId = "1649600126891015"
+          params.accountId = this.accountInfo.value
           params.pageSize = this.ipagination.pageSize
           params.pageNo = 1
           params.startDate = moment(n[0]).format('YYYY-MM-DD')
@@ -768,7 +779,7 @@
           this.showVideoList('/bytedance/batch/getVideoList', params)
         } else {
           var params = {}
-          params.accountId = "1649600126891015"
+          params.accountId = this.accountInfo.value
           params.pageSize = this.ipagination.pageSize
           params.pageNo = 1
           this.ipagination.current = 1
@@ -864,7 +875,9 @@
     margin: 0;
     padding: 0;
   }
-
+  .moreTags{
+    cursor: pointer;
+  }
   .moduler {
     background: #fff;
     margin-bottom: 16px;

+ 119 - 28
src/views/modules/BatchCreate/newCreate.vue

@@ -10,7 +10,7 @@
           </div>
         </div>
       </div>
-
+      
       <!-- 设置投放位置 -->
       <div class="moduler">
         <div class="moduler-title">设置投放位置</div>
@@ -69,8 +69,8 @@
             <div class="input-item">
               <a-form-item>
                 <a-radio-group v-decorator="['creativeWay', { initialValue:'customCreativity' }]">
-                  <a-radio-button value="proceduralCreativity">程序化创意</a-radio-button>
-                  <a-radio-button value="customCreativity">自定义创意</a-radio-button>
+                  <a-radio-button value="proceduralCreativity" :disabled="creativeWayDisable">程序化创意</a-radio-button>
+                  <a-radio-button value="customCreativity" :disabled="creativeWayDisable">自定义创意</a-radio-button>
                 </a-radio-group>
               </a-form-item>
             </div>
@@ -84,11 +84,11 @@
             </div>
             <div class="input-item">
               <a-form-item>
-                <a-radio-group v-decorator="['creativeWay', { initialValue:'DEFAULT' }]">
-                  <a-radio-button value="proceduralCreativity">自定义上传</a-radio-button>
+                <a-radio-group v-decorator="['materialAddType', { initialValue:'customUpload' }]">
+                  <a-radio-button value="customUpload">自定义上传</a-radio-button>
                   <a-tooltip>
                     <template slot="title">暂未开启该功能</template>
-                    <a-radio-button value="customCreativity" :disabled="true">选择程序化创意包</a-radio-button>
+                    <a-radio-button value="chooseProgramCreativePackage" :disabled="true">选择程序化创意包</a-radio-button>
                   </a-tooltip>
                 </a-radio-group>
               </a-form-item>
@@ -164,7 +164,7 @@
               <a-form-item>
                 <a-select v-decorator="[
                 'actionText', // 给表单赋值或拉取表单时,该input对应的key
-                { rules: [{ required: true, message: '请选择剪辑!' }] }
+                { rules: [{ required: true, message: '该选项必须填写' }] }
               ]" showSearch style="width: 480px">
                   <a-select-option :value="item" v-for="(item,i) in actionTextList" :key="i">
                     {{item}}
@@ -246,8 +246,7 @@
             </div>
             <div class="input-item">
               <a-form-item>
-                <a-cascader :options="createOptions" :fieldNames="fieldNames"
-                  placeholder="请选择创意分类" @change="createChange" />
+                <a-cascader :options="createOptions" v-model="thirdIndustryIds" :fieldNames="fieldNames"  placeholder="请选择创意分类" @change="createChange" />
               </a-form-item>
             </div>
           </div>
@@ -467,12 +466,16 @@
           children: 'children'
         },
         thirdIndustryId:undefined,
+        thirdIndustryIds:undefined,
         adposition:'smartInventorys',
         sceneInventory:'VIDEO_SCENE',
 
         errorInfo:[],
         visible:false,
         loading:false,
+
+        creativeWayDisable:false,//创意方式是否禁用
+        currentCreateData:{}, //   编辑当前的创意的数据
       }
     },
     components: {
@@ -535,11 +538,7 @@
       createChange(value){
         console.log(value);
         this.thirdIndustryId=value[2]
-        //  this.form.getFieldDecorator('thirdIndustryId')
-         
-        //  this.form.setFieldsValue({
-        //    thirdIndustryId:value[2]
-        // });
+       
         console.log(this.form.getFieldsValue())
       },
       // //获取表单的某一个属性值
@@ -646,10 +645,18 @@
                 values.adKeywords=this.createTipList;
 
                 let adIds=[];
-                this.planInfo.forEach(item=>{
+               
+                let postUrl=''
+                if(this.currentCreateData.adId){
+                    postUrl='/ctop/byteDanceCreative/updateCreative'
+                    adIds[0]=this.planInfo[0].id
+                }else{
+                  postUrl='/bytedance/batch/create/creative';
+                   this.planInfo.forEach(item=>{
                     adIds.push(item.id)
-                })
-                postAction('/bytedance/batch/create/creative', {
+                  })
+                }
+                postAction(postUrl, {
                   accountId:this.accountInfo.value,
                   adIds,
                   ...values,
@@ -692,9 +699,9 @@
       },
     },
     beforeDestroy() {
-      localStorage.removeItem('groupInfo');
-      localStorage.removeItem('planInfo');
-      localStorage.removeItem('accountInfo');
+      // localStorage.removeItem('groupInfo');
+      // localStorage.removeItem('planInfo');
+      // localStorage.removeItem('accountInfo');
 
     },
     mounted() {
@@ -708,19 +715,19 @@
       this.$bus.$emit('remove', '/modules/BatchCreate/newPlan')
       let planInfo = localStorage.getItem('planInfo')
      
-      if (planInfo) {
+      if (planInfo!='') {
         this.planInfo = JSON.parse(planInfo)
       }
       
       console.log(this.planInfo)
       let groupInfo = localStorage.getItem('groupInfo')
    
-      if (groupInfo) {
+      if (groupInfo!=null) {
         this.groupInfo = JSON.parse(groupInfo)
       }
       let accountInfo = localStorage.getItem('accountInfo')
  
-      if (accountInfo) {
+      if (accountInfo!=null) {
         this.accountInfo = JSON.parse(accountInfo)
       }
 
@@ -735,10 +742,95 @@
         }
 
       })
-
-      if(this.accountInfo.value&&this.planInfo[0].id){
-        
-      }
+      this.$nextTick(()=>{
+
+        if(this.accountInfo.value&&this.planInfo[0].id){
+            postAction('/ctop/byteDanceCreative/detail',qs.stringify({
+              planId:this.planInfo[0].id,
+              accountId:this.accountInfo.value
+            })).then(res=>{
+              console.log(res);
+              if(res.success){
+                if(res.data!=null){
+                  this.creativeWayDisable=true;
+                  // 编辑当前的创意的数据
+                  this.currentCreateData=res.data
+                    this.form.setFieldsValue({
+                      ...res.data
+                    })
+                    this.sceneInventory=res.data.sceneInventory;
+                    if(res.data.smartInventory){
+                      this.adposition='smartInventorys'
+                    }else if(res.data.sceneInventory){
+                      this.adposition='sceneInventorys';
+                      this.sceneInventory=res.data.sceneInventory
+                    }else if(res.data.inventoryType.length>0){
+                      this.adposition='inventoryTypes';
+                      this.checkedList=res.data.inventoryType;
+                      this.onChange(this.checkedList)
+                    }
+
+                    this.createTipList=res.data.adKeywords;
+                    let thirdIndustryArr=[];
+                    thirdIndustryArr[0]=(res.data.thirdIndustryId+'').substring(0,4);
+                    thirdIndustryArr[1]=(res.data.thirdIndustryId+'').substring(0,6);
+                    thirdIndustryArr[2]=(res.data.thirdIndustryId+'').substring(0,8);
+
+                   
+                    thirdIndustryArr=thirdIndustryArr.map(item=>{
+                      return item*1
+                    })
+                     console.log(thirdIndustryArr)
+                    this.thirdIndustryId=res.data.thirdIndustryId;
+                    this.thirdIndustryIds=thirdIndustryArr;
+
+                    if(res.data.title_list){
+                      this.form.setFieldsValue({
+                        creativeWay:'proceduralCreativity'
+                      })
+                      this.$refs.material.titleData=res.data.title_list
+                    }else{
+                      this.form.setFieldsValue({
+                        creativeWay:'customCreativity'
+                      })
+
+                    }
+
+                     var dataCreatives = this.$refs.material.HorizontalLargeImageListBig.concat(
+                      this.$refs.material.HorizontalLargeImageListHeng,
+                      this.$refs.material.HorizontalLargeImageListShu,
+                      this.$refs.material.HorizontalLargeImageListZu,
+                      this.$refs.material.HorizontalLargeImageListSmall,
+                      this.$refs.material.HorizontalLargeImageListBigShu
+                    )
+                    res.data.creatives.forEach(item=>{
+                      if(item.imageMode=="CREATIVE_IMAGE_MODE_VIDEO_VERTICAL"){
+                          item.showElse=true;
+                          item.many=5
+                          this.$refs.material.HorizontalLargeImageListHeng.push(item)
+                      }else if(item.imageMode=="CREATIVE_IMAGE_MODE_VIDEO"){    
+                          item.showElse=true;
+                          item.many=5                  
+                          this.$refs.material.HorizontalLargeImageListShu.push(item)
+                      }
+                    })
+                    if(this.$refs.material.HorizontalLargeImageListShu.length>0){
+                      this.$refs.material.HorizontalLargeImageList=this.$refs.material.HorizontalLargeImageListShu;
+                      this.$refs.material.materialType='CREATIVE_IMAGE_MODE_VIDEO'
+                    }else if(this.$refs.material.HorizontalLargeImageListHeng.length>0){
+                      this.$refs.material.HorizontalLargeImageList=this.$refs.material.HorizontalLargeImageListHeng;
+                      this.$refs.material.materialType='CREATIVE_IMAGE_MODE_VIDEO_VERTICAL'
+                    }
+                    
+
+                   
+                    console.log(this.$refs.material, this.$refs.material.titleData)
+                }
+              }          
+            })
+        }
+              
+      })
     },
   }
 </script>
@@ -760,7 +852,6 @@
   .ant-tooltip-inner {
     span {
       display: block;
-
     }
   }
 

+ 13 - 13
src/views/modules/BatchCreate/newPlan.vue

@@ -274,11 +274,11 @@
                   v-if="convertType=='AD_CONVERT_SOURCE_TYPE_NORMAL_APP_DOWNLOAD'"
                   @change="externalActionsChange"
                 > 
-                  <a-radio-button v-for="item in currentConvertType.external_actions" :key="item.external_action" :value="item.external_action">
+                  <a-radio-button v-for="item in currentConvertType.external_actions" :key="item.convertId" :value="item.convertId">
                     {{item.external_name}}</a-radio-button>
                 </a-radio-group>
-                <a-select  style="width: 335px" v-if="convertType=='AD_CONVERT_SOURCE_TYPE_APP_DOWNLOAD'"  @change="APIChange">
-                  <a-select-option v-for="item in currentConvertType.external_actions" :key="item.convert_id" :value='item.convert_id'>
+                <a-select  style="width: 335px" v-if="convertType!='AD_CONVERT_SOURCE_TYPE_NORMAL_APP_DOWNLOAD'"  @change="APIChange">
+                  <a-select-option v-for="item in currentConvertType.external_actions" :key="item.convertId" :value='item.convertId'>
                     {{item.external_name}}
                   </a-select-option>
                 </a-select>
@@ -319,7 +319,7 @@
                     {{item.external_name}}</a-radio-button>
                 </a-radio-group> -->
                 <a-select  style="width: 335px" v-if="convertType=='AD_CONVERT_SOURCE_TYPE_INTERNAL'&&currentConvertType.external_actions.length>0"  @change="APIChange" placeholder="请选择转化目标">
-                  <a-select-option v-for="item in currentConvertType.external_actions"   :key="item.convert_id" :value='item.convert_id'>
+                  <a-select-option v-for="item in currentConvertType.external_actions"  :key="item.convertId" :value='item.convertId'>
                     {{item.external_name}}
                   </a-select-option>
                 </a-select>
@@ -718,9 +718,9 @@
                 <a-radio-group
                   v-decorator="['deepBidType', { initialValue:'DEEP_BID_PACING' }]"
                 >
-                  <a-radio-button value="DEEP_BID_PACING" v-if="currentDeepConvert.deep_external_action=='AD_CONVERT_TYPE_NEXT_DAY_OPEN'">自动优化</a-radio-button>
-                  <a-radio-button value="DEEP_BID_MIN" v-if="currentDeepConvert.deep_external_action=='AD_CONVERT_TYPE_NEXT_DAY_OPEN'">自定义双出价</a-radio-button>
-                  <a-radio-button value="ROI_COEFFICIENT" v-if="currentDeepConvert.deep_external_action=='AD_CONVERT_TYPE_LT_ROI'">ROI系数</a-radio-button>
+                  <a-radio-button value="DEEP_BID_PACING" v-if="currentDeepConvert=='AD_CONVERT_TYPE_NEXT_DAY_OPEN'">自动优化</a-radio-button>
+                  <a-radio-button value="DEEP_BID_MIN" v-if="currentDeepConvert=='AD_CONVERT_TYPE_NEXT_DAY_OPEN'">自定义双出价</a-radio-button>
+                  <a-radio-button value="ROI_COEFFICIENT" v-if="currentDeepConvert=='AD_CONVERT_TYPE_LT_ROI'">ROI系数</a-radio-button>
                  
                 </a-radio-group>
               </a-form-item>
@@ -946,16 +946,16 @@ export default {
       console.log(val,this.currentConvertType);
       this.convertId=val
       this.currentConvertType.external_actions.forEach(item=>{
-        if(item.convert_id==val){
-          console.log(item)
+        if(item.convertId==val){
+          // console.log(item)
           this.externalAction=item.external_action;
-          this.currentDeepConvert=item.deep_external_actions[0];
-          if(item.deep_external_actions[0].deep_external_action=='AD_CONVERT_TYPE_LT_ROI'){
+          this.currentDeepConvert=item.deep_external_action;
+          if(item.deep_external_action=='AD_CONVERT_TYPE_LT_ROI'){
             this.form.getFieldDecorator('deepBidType')
             this.form.setFieldsValue({
               deepBidType:'ROI_COEFFICIENT'
             })
-          }else if(item.deep_external_actions[0].deep_external_action=='AD_CONVERT_TYPE_NEXT_DAY_OPEN'){
+          }else if(item.deep_external_action=='AD_CONVERT_TYPE_NEXT_DAY_OPEN'){
             this.form.getFieldDecorator('deepBidType')
             this.form.setFieldsValue({
               deepBidType:'DEEP_BID_PACING'
@@ -988,7 +988,7 @@ export default {
             if(res.success){
              
               this.convertList=[];
-              this.convertList=res.result.data.list;
+              this.convertList=res.result.data;
               this.isShowConversionTarget = true
               
             }

+ 40 - 1
src/views/modules/Statistics/accountMaterStatistics.vue

@@ -98,11 +98,24 @@ th div {
             <span slot="photoClickCost" slot-scope="photoClickCost">{{ photoClickCost | toFixtwo }}</span>
             <span slot="actionCost" slot-scope="actionCost">{{ actionCost | toFixtwo }}</span>
             <span slot="conversionPrice" slot-scope="conversionPrice">{{ conversionPrice | toFixtwo }}</span>
+            <span slot="operation" slot-scope="text,record">
+                <a href="javascript:;" @click.stop="showRelevantPeople(record)">查看相关人员</a>
+            </span>
+            
           </a-table>
         </a-card>
       </a-col>
     </a-row>
+  
+    <div class="relevantPeople">
+      <a-modal v-model="relevantPeopleVisible" title="相关人员" :footer="null" :centered='true'>
+        <p>编导:{{relevantPeopleData.planName || '暂无数据'}}</p>
+        <p>剪辑:{{relevantPeopleData.clipName || '暂无数据'}}</p>
+        <p>拍摄:{{relevantPeopleData.shotName || '暂无数据'}}</p>
+      </a-modal>
+    </div>
     <ratio-modal ref="ratio" />
+    
   </div>
 </template>
 
@@ -122,6 +135,7 @@ import { JeecgListMixin } from '@/mixins/ipagination'
 
 // import the component
 import Treeselect from './components/Treeselect.vue'
+import { getAction } from '../../../api/manage'
 
 // 引入基本模板
 let echarts = require('echarts/lib/echarts')
@@ -255,6 +269,14 @@ const columns = [
     scopedSlots: { customRender: 'conversionPrice' },
     align: 'center',
     sorter: (a, b) => a.conversionPrice - b.conversionPrice
+  },
+  {
+    title:'相关人员',
+    dataIndex:'operation',
+    key:'operation',
+    scopedSlots: { customRender: 'operation' },
+    align: 'center',
+    width:120,
   }
 ]
 const columnsDetail = [
@@ -358,6 +380,8 @@ export default {
   mixins: [JeecgListMixin],
   data: function() {
     return {
+      relevantPeopleVisible:false,
+      relevantPeopleData:{},
       title: '账户素材报表',
 
       show: true,
@@ -389,7 +413,8 @@ export default {
             this.$refs.ratio.getMineList(record, this.active)
           }
         }
-      })
+      }),
+      
     }
   },
   filters: {
@@ -426,6 +451,20 @@ export default {
   methods: {
     moment,
     ...mapGetters(['nickname', 'avatar', 'userInfo']),
+    // 查看相关人员
+    showRelevantPeople(record){
+      this.relevantPeopleVisible=true;
+      console.log(record)
+      getAction('/ctop/materialAscription/getDetail',{
+        code:record.signature
+      }).then(res=>{
+        console.log(res);
+         if(res.result&&res.success){
+          this.relevantPeopleData=res.result
+        }
+      })
+    },
+
     disabledDate(current) {
       return current && current > moment().endOf('day')
     },

+ 34 - 1
src/views/modules/Statistics/materialRank.vue

@@ -32,6 +32,9 @@
           @click="openVideo(records.url)">
       </div>
       <span slot="convertRate" slot-scope="convertRate">{{ convertRate | toPercentage }}</span>
+        <span slot="operation" slot-scope="text,record">
+            <a href="javascript:;" @click.stop="showRelevantPeople(record)">查看相关人员</a>
+        </span>
     </a-table>
     <div class="fenye" :v-show="pageShow">
       <a-pagination showQuickJumper :default-current="pageNo" :total="total" size="small" style="float:right"
@@ -44,6 +47,13 @@
       <video @click.stop class="video" :src="videoUrl" controls="controls" style="height:600px;width:100%">您的浏览器不支持
         video 标签。</video>
     </a-modal>
+   
+    <a-modal v-model="relevantPeopleVisible" title="相关人员" :footer="null" :centered='true'>
+      <p>编导:{{relevantPeopleData.planName || '暂无数据'}}</p>
+      <p>剪辑:{{relevantPeopleData.clipName || '暂无数据'}}</p>
+      <p>拍摄:{{relevantPeopleData.shotName || '暂无数据'}}</p>
+    </a-modal>
+  
   </div>
 </template>
 
@@ -56,7 +66,8 @@
     downFile,
     downFilePost
   } from '@/api/manage'
-  let columns = [{
+  let columns = [
+    {
       title: '视频',
       dataIndex: 'videoU',
       align: 'center',
@@ -157,11 +168,20 @@
       },
       align: 'center',
     },
+    {
+      title:'相关人员',
+      dataIndex:'operation',
+      key:'operation',
+      scopedSlots: { customRender: 'operation' },
+      align: 'center',         
+    }
   ]
   export default {
     data() {
       return {
         columns,
+        relevantPeopleVisible:false,
+        relevantPeopleData:{},
         dataSource: [],
         ipagination: {
           current: 1,
@@ -199,6 +219,19 @@
     },
     methods: {
       moment,
+      // 查看相关人员
+      showRelevantPeople(record){
+        this.relevantPeopleVisible=true;
+        console.log(record)
+        getAction('/ctop/materialAscription/getDetail',{
+          code:record.signature
+        }).then(res=>{
+          console.log(res);
+          if(res.result&&res.success){
+            this.relevantPeopleData=res.result
+          }
+        })
+      },
       getDataSource(page, pageSize) {
 
         this.pageNo = page

+ 36 - 2
src/views/modules/Statistics/materialStatistics.vue

@@ -106,11 +106,20 @@
             <span slot="photoClickCost" slot-scope="photoClickCost">{{ photoClickCost | toFixtwo }}</span>
             <span slot="actionCost" slot-scope="actionCost">{{ actionCost | toFixtwo }}</span>
             <span slot="conversionPrice" slot-scope="conversionPrice">{{ conversionPrice | toFixtwo }}</span>
+            <span slot="operation" slot-scope="text,record">
+                <a href="javascript:;" @click.stop="showRelevantPeople(record)">查看相关人员</a>
+            </span>
           </a-table>
         </a-card>
       </a-col>
     </a-row>
-
+    
+     
+      <a-modal v-model="relevantPeopleVisible" title="相关人员" :footer="null" :centered='true'>
+        <p>编导:{{relevantPeopleData.planName || '暂无数据'}}</p>
+        <p>剪辑:{{relevantPeopleData.clipName || '暂无数据'}}</p>
+        <p>拍摄:{{relevantPeopleData.shotName || '暂无数据'}}</p>
+      </a-modal>
     <ratio-modal ref="ratio" />
   </div>
 </template>
@@ -123,7 +132,7 @@ import { getKuaiShouMaterialMarket, getKuaiShouChainRatio } from '@api/statistic
 import axios from 'axios'
 import { mapGetters } from 'vuex'
 import { stopOtherVideo, closeAllVideoFun } from '@/utils/videoControl' // 停止除当前外的其他视频播放,及停止所有视频播放的方法
-
+import { getAction } from '../../../api/manage'
 import timeCheck from './components/timeCheck'
 import ratioModal from './components/ratioModal'
 
@@ -237,6 +246,14 @@ const columns = [
     scopedSlots: { customRender: 'conversionPrice' },
     align: 'center',
     sorter: (a, b) => a.conversionPrice - b.conversionPrice
+  },
+  {
+    title:'相关人员',
+    dataIndex:'operation',
+    key:'operation',
+    scopedSlots: { customRender: 'operation' },
+    align: 'center',
+    
   }
 ]
 const columnsDetail = [
@@ -328,6 +345,7 @@ const columnsDetail = [
 ]
 export default {
   name: 'data-display-statistics',
+ 
   components: {
     ACol,
     ARow,
@@ -337,6 +355,8 @@ export default {
   mixins: [JeecgListMixin],
   data: function() {
     return {
+       relevantPeopleVisible:false,
+      relevantPeopleData:{},
       title: '素材大盘报表',
       columns,
       columnsDetail,
@@ -406,6 +426,20 @@ export default {
     }
   },
   methods: {
+    // 查看相关人员
+    showRelevantPeople(record){
+      this.relevantPeopleVisible=true;
+      console.log(record)
+      getAction('/ctop/materialAscription/getDetail',{
+        code:record.signature
+      }).then(res=>{
+        console.log(res);
+        if(res.result&&res.success){
+          this.relevantPeopleData=res.result
+        }
+        
+      })
+    },
     handleOk() {
       this.visible = false
     },

+ 11 - 1
src/views/modules/Statistics/refuseDataCreat.vue

@@ -74,7 +74,7 @@
           :wrapperCol="{ lg: { span: 18 }, sm: { span: 18 } }" v-if="getData('type')==1">
           <a-input v-decorator="[
           'updateDescription'
-        ]" :max="10" :min="1" style="width:100%">
+        ]" :max="10" :min="1" style="width:100%" @change="DescriptionChange">
           </a-input>
           <a @click="showTitle()">推荐标题</a><a style="margin-left:10px" @click="showCunTitle()">标题收藏</a>
         </a-form-item>
@@ -357,6 +357,16 @@
       }
     },
     methods: {
+      // 广告语改变
+      DescriptionChange(e){
+        console.log(e.target.value);
+        if(e.target.value.length>30){
+          this.form.setFieldsValue({
+            updateDescription:e.target.value.subString(0,30)
+          });
+          this.$message.error('广告语最多30字!')
+        }
+      },
       filter(inputValue, path) {
         return path.some(option => option.label.toLowerCase().indexOf(inputValue.toLowerCase()) > -1)
       },

+ 29 - 3
src/views/modules/Statistics/videoStatics/vDay.vue

@@ -130,7 +130,15 @@
       <span slot="downloadStartCost" slot-scope="downloadStartCost">{{ downloadStartCost | tofixed }}</span>
       <span slot="installFinishCost" slot-scope="installFinishCost">{{ installFinishCost | tofixed }}</span>
       <span slot="convertCost" slot-scope="convertCost">{{ convertCost | tofixed }}</span>
+      <span slot="operation" slot-scope="text,record">
+          <a href="javascript:;" @click.stop="showRelevantPeople(record)">查看相关人员</a>
+      </span>
     </a-table>
+     <a-modal v-model="relevantPeopleVisible" title="相关人员" :footer="null" :centered='true'>
+        <p>编导:{{relevantPeopleData.planName || '暂无数据'}}</p>
+        <p>剪辑:{{relevantPeopleData.clipName || '暂无数据'}}</p>
+        <p>拍摄:{{relevantPeopleData.shotName || '暂无数据'}}</p>
+      </a-modal>
     <a-modal v-model="Videovisible" title="视频详情" @ok="videoOk" :footer="null" width='50%'>
         <video
           @click.stop
@@ -189,10 +197,12 @@ const columnsFixd = [
 //   },
 
   {
-    title: '视频描述',
-    dataIndex: 'materialDesc',
+    title:'相关人员',
+    dataIndex:'operation',
+    key:'operation',
+    scopedSlots: { customRender: 'operation' },
     align: 'center',
-    width: 100,
+    width:100,
     fixed: 'left'
   }
 ]
@@ -272,6 +282,8 @@ let show = 0
 export default {
   data() {
     return {
+        relevantPeopleVisible:false,
+      relevantPeopleData:{},
         roleCode: localStorage.getItem('roleCode'),
       //下拉选择框的数据
       projectArr:[],
@@ -329,6 +341,20 @@ export default {
   },
   mixins: [JeecgListMixin],
   methods: {
+     // 查看相关人员
+    showRelevantPeople(record){
+      this.relevantPeopleVisible=true;
+      console.log(record)
+      getAction('/ctop/materialAscription/getDetail',{
+        code:record.signature
+      }).then(res=>{
+        console.log(res);
+        if(res.result&&res.success){
+          this.relevantPeopleData=res.result
+        }
+        
+      })
+    },
       sort(pagination, filters, sorter, { currentDataSource }){
          if(sorter.order == 'ascend'){
               this.HttpPost(sorter.columnKey+'+')

+ 26 - 9
src/views/modules/Statistics/videoStatics/vMonth.vue

@@ -89,7 +89,9 @@
      
 
       <span slot="operation" slot-scope="text, record">
-        <a href="javascript:;" @click="opendetail(text, record)">查看明细</a>
+        <a href="javascript:;" @click="opendetail(text, record)" style="margin-right:5px">查看明细</a>
+        |
+        <a href="javascript:;" @click.stop="showRelevantPeople(record)" style="margin-left:5px">查看相关人员</a>
       </span>
 
       <div slot="videoU" slot-scope="test,records">
@@ -140,6 +142,11 @@
       <span slot="installFinishCost" slot-scope="installFinishCost">{{ installFinishCost | tofixed }}</span>
       <span slot="convertCost" slot-scope="convertCost">{{ convertCost | tofixed }}</span>
     </a-table>
+    <a-modal v-model="relevantPeopleVisible" title="相关人员" :footer="null" :centered='true'>
+        <p>编导:{{relevantPeopleData.planName || '暂无数据'}}</p>
+        <p>剪辑:{{relevantPeopleData.clipName || '暂无数据'}}</p>
+        <p>拍摄:{{relevantPeopleData.shotName || '暂无数据'}}</p>
+      </a-modal>
     <!-- 明细表 -->
 
     <a-modal v-model="visibleDetail" title="详细信息" width="60%" :footer="null" >
@@ -215,19 +222,13 @@ const columnsFixd = [
 //     fixed: 'left'
 //   },
 
-  {
-    title: '视频描述',
-    dataIndex: 'materialDesc',
-    align: 'center',
-    width: 100,
-    fixed: 'left'
-  },
+ 
   {
     title: '操作',
     dataIndex: 'operation',
     align: 'center',
     scopedSlots: { customRender: 'operation' },
-    width: 80,
+    width: 180,
     fixed: 'left'
   }
 ]
@@ -365,6 +366,8 @@ let detailConsum = [
 export default {
   data() {
     return {
+       relevantPeopleVisible:false,
+      relevantPeopleData:{},
         roleCode: localStorage.getItem('roleCode'),
        //下拉选择框的数据
       projectArr:[],
@@ -433,6 +436,20 @@ export default {
       }
   },
   methods: {
+    // 查看相关人员
+    showRelevantPeople(record){
+      this.relevantPeopleVisible=true;
+      console.log(record)
+      getAction('/ctop/materialAscription/getDetail',{
+        code:record.signature
+      }).then(res=>{
+        console.log(res);
+        if(res.result&&res.success){
+          this.relevantPeopleData=res.result
+        }
+        
+      })
+    },
       sort(pagination, filters, sorter, { currentDataSource }){
           console.log(pagination, filters, sorter)
           if(sorter.order == 'ascend'){

+ 31 - 5
src/views/modules/Statistics/videoStatics/vSummary.vue

@@ -161,8 +161,16 @@
       <span slot="nextDayOpenRate" slot-scope="nextDayOpenRate">{{ nextDayOpenRate | toPercentage }}</span>
       <span slot="cpm" slot-scope="cpm">{{ cpm | tofixed }}</span>
       <span slot="statDatetime" slot-scope>{{ timedata[0]+'~'+timedata[1]}}</span>
-    </a-table>
+        <span slot="operation" slot-scope="text,record">
+           <a href="javascript:;" @click.stop="showRelevantPeople(record)">查看相关人员</a>
+       </span>
 
+    </a-table>
+    <a-modal v-model="relevantPeopleVisible" title="相关人员" :footer="null" :centered='true'>
+        <p>编导:{{relevantPeopleData.planName || '暂无数据'}}</p>
+        <p>剪辑:{{relevantPeopleData.clipName || '暂无数据'}}</p>
+        <p>拍摄:{{relevantPeopleData.shotName || '暂无数据'}}</p>
+      </a-modal>
     <a-modal v-model="Videovisible" title="视频详情" @ok="videoOk" :footer="null" width="50%">
       <video
         @click.stop
@@ -205,11 +213,13 @@ const columnsFixd = [
     width: 100,
     fixed: 'left'
   },
-  {
-    title: '视频描述',
-    dataIndex: 'materialDesc',
+    {
+    title:'相关人员',
+    dataIndex:'operation',
+    key:'operation',
+    scopedSlots: { customRender: 'operation' },
     align: 'center',
-    width: 100,
+    width:100,
     fixed: 'left'
   }
 ]
@@ -294,6 +304,8 @@ let show = 0
 export default {
   data() {
     return {
+        relevantPeopleVisible:false,
+      relevantPeopleData:{},
       roleCode: localStorage.getItem('roleCode'),
        //下拉选择框的数据
       projectArr:[],
@@ -339,6 +351,20 @@ export default {
     Treeselect
   },
   methods: {
+    // 查看相关人员
+    showRelevantPeople(record){
+      this.relevantPeopleVisible=true;
+      console.log(record)
+      getAction('/ctop/materialAscription/getDetail',{
+        code:record.signature
+      }).then(res=>{
+        console.log(res);
+        if(res.result&&res.success){
+          this.relevantPeopleData=res.result
+        }
+        
+      })
+    },
       sort(pagination, filters, sorter, { currentDataSource }){
           console.log(pagination, filters, sorter)
           if(sorter.order == 'ascend'){

+ 27 - 11
src/views/modules/Statistics/videoStatics/vWeek.vue

@@ -87,9 +87,10 @@
       @change="sort"
     >
      
-
       <span slot="operation" slot-scope="text, record">
-        <a href="javascript:;" @click="opendetail(text, record)">查看明细</a>
+        <a href="javascript:;" @click="opendetail(text, record)" style="margin-right:5px">查看明细</a>
+        |
+        <a href="javascript:;" @click.stop="showRelevantPeople(record)" style="margin-left:5px">查看相关人员</a>
       </span>
 
       <div slot="videoU" slot-scope="test,records">
@@ -139,7 +140,13 @@
       <span slot="downloadStartCost" slot-scope="downloadStartCost">{{ downloadStartCost | tofixed }}</span>
       <span slot="installFinishCost" slot-scope="installFinishCost">{{ installFinishCost | tofixed }}</span>
       <span slot="convertCost" slot-scope="convertCost">{{ convertCost | tofixed }}</span>
+      
     </a-table>
+     <a-modal v-model="relevantPeopleVisible" title="相关人员" :footer="null" :centered='true'>
+        <p>编导:{{relevantPeopleData.planName || '暂无数据'}}</p>
+        <p>剪辑:{{relevantPeopleData.clipName || '暂无数据'}}</p>
+        <p>拍摄:{{relevantPeopleData.shotName || '暂无数据'}}</p>
+      </a-modal>
     <!-- 明细表 -->
 
     <a-modal v-model="visibleDetail" title="详细信息" width="60%" :footer="null" >
@@ -214,20 +221,13 @@ const columnsFixd = [
 //     width: 150,
 //     fixed: 'left'
 //   },
-
-  {
-    title: '视频描述',
-    dataIndex: 'materialDesc',
-    align: 'center',
-    width: 100,
-    fixed: 'left'
-  },
+  
   {
     title: '操作',
     dataIndex: 'operation',
     align: 'center',
     scopedSlots: { customRender: 'operation' },
-    width: 80,
+    width: 180,
     fixed: 'left'
   }
 ]
@@ -361,6 +361,8 @@ let show = 0
 export default {
   data() {
     return {
+      relevantPeopleVisible:false,
+      relevantPeopleData:{},
         roleCode: localStorage.getItem('roleCode'),
        //下拉选择框的数据
       projectArr:[],
@@ -426,6 +428,20 @@ export default {
   },
   mixins: [JeecgListMixin],
   methods: {
+     // 查看相关人员
+    showRelevantPeople(record){
+      this.relevantPeopleVisible=true;
+      console.log(record)
+      getAction('/ctop/materialAscription/getDetail',{
+        code:record.signature
+      }).then(res=>{
+        console.log(res);
+        if(res.result&&res.success){
+          this.relevantPeopleData=res.result
+        }
+        
+      })
+    },
       sort(pagination, filters, sorter, { currentDataSource }){
           console.log(pagination, filters, sorter)
           if(sorter.order == 'ascend'){

+ 1 - 1
src/views/modules/agent/KuaishouReportDailyAgentList.vue

@@ -200,7 +200,7 @@
     }
   },
     methods: {
-     
+        
     }
   }
 </script>

+ 7 - 4
vue.config.js

@@ -61,11 +61,14 @@ module.exports = {
         // target: 'http://192.168.0.59:8088', //请求本地 需要jeecg-boot后台项目  英豪
         // target: 'http://192.168.1.72:8088', //请求本地 需要jeecg-boot后台项目  英豪
         // target: 'http://192.168.2.115:8080', //请求本地 需要jeecg-boot后台项目  祚云
-        target: 'http://192.168.1.94:8088', //请求本地 需要jeecg-boot后台项目  孙震
+        // target: 'http://192.168.1.94:8088', //请求本地 需要jeecg-boot后台项目  孙震
         // target: 'http://192.168.0.230:8088', //请求本地 需要jeecg-boot后台项目  孙震
-        // target: 'http://192.168.1.51:8088', //请求本地 需要jeecg-boot后台项目  毕洁泉
-        // target: 'http://192.168.1.165:8848', //请求本地 需要jeecg-boot后台项目  毕洁泉
-        // target: 'http://api.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目 
+        // target: 'http://192.168.1.51:8080', //请求本地 需要jeecg-boot后台项目  毕洁泉
+
+        // target: 'http://192.168.1.51:8098', //请求本地 需要jeecg-boot后台项目  毕洁泉
+        // target: 'http://192.168.0.252:8098', //请求本地 需要jeecg-boot后台项目  毕洁泉
+        // target: 'http://192.168.0.170:8088', //请求本地 需要jeecg-boot后台项目  毕洁泉
+        target: 'http://api.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目 
         // target: 'https://trac.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目 
         // target: 'http://39.106.184.70:8088/', //请求本地 需要jeecg-boot后台项目 
         // target: 'http://adsp.tjyourong.com.cn/', //请求本地 需要jeecg-boot后台项目