소스 검색

Merge branch 'master' into feature/work-jyf

jiayufei 4 년 전
부모
커밋
23e2c35cac
3개의 변경된 파일351개의 추가작업 그리고 62개의 파일을 삭제
  1. 319 59
      src/views/modules/autoLaunch/configLaunchInfo.vue
  2. 30 2
      src/views/modules/autoLaunch/configLaunchList.vue
  3. 2 1
      vue.config.js

+ 319 - 59
src/views/modules/autoLaunch/configLaunchInfo.vue

@@ -13,7 +13,7 @@
                 <div class="required-item"></div>
                 </div>
                 <div class="input-item">                
-                    <Treeselect :appId.sync="accountId" :multiple="false"  request="2,4"   ref="treeSelect" style="margin-bottom:8px;width:600px " />               
+                    <Treeselect :appId.sync="accountId" :multiple="false"  :disabled="$route.query.id" request="2,4"   ref="treeSelect" style="margin-bottom:8px;width:600px " />               
                     <!-- <Treeselect :appId.sync="accountId" :multiple="false" request="2" reqUrl='/ctop/projectMember/getProjectAccountByUserId'  ref="treeSelect" style="margin-bottom:8px;width:580px " /> -->
                 </div>
             </div>
@@ -160,11 +160,11 @@
                    <!-- <a-tag color="#2db7f5" @click="getChangeAll('定向包', 'form', 'groupName')"
                 >+定向包</a-tag
               > -->
-              <!-- <a-tag color="#2db7f5" @click="getChangeAll('日期', 'form', 'groupName')">+日期</a-tag>
-              <a-tag color="#2db7f5" @click="getChangeAll('标号', 'form', 'groupName')">+标号</a-tag> -->
-              <a-tag color="#2db7f5" @click="getChangeAll('应用包名', 'form', 'groupName')"
+              <a-tag color="#2db7f5" @click="getChangeAll('应用名称', 'form', 'groupName')">+应用名称</a-tag>
+              <a-tag color="#2db7f5" @click="getChangeAll('应用标记', 'form', 'groupName')">+应用标记</a-tag>
+              <!-- <a-tag color="#2db7f5" @click="getChangeAll('应用包名', 'form', 'groupName')"
                 >+应用包名</a-tag
-              >
+              > -->
                <a-tag color="#2db7f5" @click="getChangeAll('创意制作方式', 'form', 'groupName')"
                 >+创意制作方式</a-tag
               >
@@ -244,7 +244,7 @@
                         </div>
                         <div class="input-item">
                             <a-form-item   >
-                                <a-radio-group  v-model="sysType" @change="sysTypeChange">
+                                <a-radio-group  v-model="sysType" @change="sysTypeChange" >
                                 <a-radio-button :value="1">安卓</a-radio-button>
                                 <a-radio-button :value="2">IOS</a-radio-button>
                                 </a-radio-group>
@@ -262,12 +262,13 @@
                             <a-form-item>
                                 <a-select v-decorator="['appId', { rules: [{ required: true, message: '请选择目标应用' }] }]" showSearch allowClear
                                     placeholder="选择应用目标" optionFilterProp="children" style="width: 500px"  
-                                   :filterOption="filterOption" @change="appIdChange" :mode="getFormData('singleAppid')==1?'defalut':'multiple'" :maxTagCount='1'>
+                                   :filterOption="filterOption" @change="appIdChange" :mode="getFormData('singleAppid')==1?'defalut':'multiple'" :maxTagCount='1' 
+                                   :labelInValue="true">
                                     <a-select-option v-if="getFormData('singleAppid')==0" :value='0' @click="selectAllAppId">选择以下全部</a-select-option>
                                     <a-select-option v-for="appModel in appList" :key="appModel.appId" :value="appModel.appId">
-                                        {{ appModel.appName }}&#12288;&nbsp;&#12288; {{ appModel.appVersion }}&#12288;&#12288;&#12288;{{
+                                        {{
                                         appModel.platform | platform
-                                        }}
+                                        }}&#12288;&#12288;&#12288;{{ appModel.appName }}&#12288;&nbsp;&#12288; {{ appModel.appVersion }}
                                     </a-select-option>
                                 </a-select>
                                 <a-button type="primary" @click="addApplication" style="margin-left:10px" :loading="tongbuLoading">刷新应用</a-button>
@@ -292,6 +293,57 @@
                             </a-form-item>
                         </div>
                     </div>
+
+                    <div class="row-item" v-if="getFormData('singleAppid')==0">
+                    <div class="hint-item"></div>
+                    <div class="label-item">
+                        <div class="text-item">是否多应用分别出价</div>
+                        </div>
+                        <div class="input-item">
+                            <a-form-item  >
+                                <a-radio-group  v-decorator="['multipleBids', {initialValue:0 }]">
+                                    <a-radio-button :value="0">否</a-radio-button>
+                                    <a-radio-button :value="1">是</a-radio-button>
+                                </a-radio-group>
+                            </a-form-item>         
+                        </div>
+                    </div>
+                    <div class="row-item" v-if="getFormData('multipleBids')==1">
+                    <div class="hint-item"></div>
+                    <div class="label-item">
+                        <div class="text-item">分别出价</div>
+                        </div>
+                        <div class="input-item">
+                            <div style="width:120vh;height:300px;overflow:auto;border:1px solid #f2f2f2;padding:10px">
+                                <p v-for="(item,index) in multipleBidData" :key="index" style="display:flex">
+                                   
+                                   
+                                    <span style="white-space:nowrap;line-height: 30px;margin-right: 10px;">OCPM出价</span>
+                                    <a-input-number
+                                        style="width:150px"
+                                        :max="10000"
+                                        :step="0.1"
+                                        v-model="item.cpaBid"
+                                    />
+                                    <span style="white-space:nowrap;line-height: 30px;margin-right: 10px;">深度转化出价</span>
+                                    <a-input-number
+                                        style="width:150px"
+                                        :max="10000"
+                                        :step="0.1"
+                                        v-model="item.deepConversionBid"
+                                    />
+                                    <span style="margin-left:20px;white-space:nowrap;line-height: 30px;margin-right: 10px;">渠道号</span>
+                                    <a-input style="width:150px" placeholder="请填写渠道号" v-model="item.channelCode" />
+                                    <a-icon 
+                                    @click="checkOneBid(item)"
+                                    type="check" style="margin-left:20px;white-space:nowrap;line-height: 30px;margin-right: 10px;cursor:pointer;color:green" />
+                                    <span  style="margin:5px;width:50%">{{item.label}}</span>
+                                   
+                                </p>
+                            </div>
+                        </div>
+                    </div>
+
                     <div class="row-item" v-if="getFormData('campaignType') == 3">
                         <div class="hint-item"></div>
                         <div class="label-item">
@@ -411,7 +463,7 @@
                     <a-form-item>
                         <a-select v-decorator="['appId', { rules: [{ required: true, message: '请选择目标应用' }] }]" showSearch allowClear
                             placeholder="选择应用目标" optionFilterProp="children" style="width: 500px"  
-                            :filterOption="filterOption" @change="appIdChange">
+                            :filterOption="filterOption" @change="appIdChange" :labelInValue="true">
                             <a-select-option v-for="appModel in appList" :key="appModel.appId" :value="appModel.appId">
                                 {{ appModel.appName }}&#12288;&nbsp;&#12288; {{ appModel.appVersion }}&#12288;&#12288;&#12288;{{
                                 appModel.platform | platform
@@ -536,7 +588,7 @@
                         <div class="input-item">
                             <a-form-item>
                                  <a-radio-group  v-decorator="['platformOs', {initialValue:1 }]" @change="platformOsChange">
-                                    <a-radio-button :value="0">不限</a-radio-button>
+                                    <!-- <a-radio-button :value="0">不限</a-radio-button> -->
                                     <a-radio-button :value="1">Android</a-radio-button>
                                     <a-radio-button :value="2">IOS</a-radio-button>
                                 </a-radio-group>
@@ -1079,7 +1131,7 @@
                         </div>    
                     </div>
                     
-                    <div class="row-item" v-if="getFormData('bidType')==10&&getFormData('ocpxActionType')!= 191">
+                    <div class="row-item" v-if="getFormData('bidType')==10&&getFormData('ocpxActionType')!= 191&&getFormData('multipleBids')!==1">
                         <div class="hint-item">
                         </div>
                         <div class="label-item">
@@ -1088,19 +1140,24 @@
                         </div>
                         <div class="input-item">
                             <a-form-item>
-                                <a-input-number
+                                <!-- <a-input-number
                                     style="width:200px"
                                     :max="10000"
                                     :step="0.1"
                                     v-decorator="['cpaBid', {rules:validationRules.bid} ]"
-                                />
+                                /> -->
+                                <a-input style="width:200px;ime-mode:disabled" v-decorator="['cpaBid', {rules:validationRules.bid} ]" @blur="checkCpaBid"
+                                @keypress="keyDown">
+                                    
+                                </a-input>
                                 <span style="margin-left:5px">元</span>
-                              
+                                <br>
+                                <span style="color:red">单出价请输入单数字,阶梯出价请用/隔开</span>
                             </a-form-item>
                                 <span
                                 class="tip"
-                                v-if="getFormData('cpaBid')<0.1"
-                                >请输入点击出价,不少于0.1元,不超过10000元</span>
+                                v-if="checkCpaBidBloon"
+                                >不允许出现除"-"和"/"之外的所有字符,并且二者不可同时出现</span>
                         </div>    
                     </div>
                     <div class="row-item" v-if="getFormData('bidType')==10&&getFormData('ocpxActionType') == 191">
@@ -1129,7 +1186,8 @@
                         </div>    
                     </div>
                     
-                    <div class="row-item" v-if="(getFormData('ocpxActionType') == 180 || getFormData('ocpxActionType') == 53) && groupTypeData.deepConversionTypes && groupTypeData.deepConversionTypes.length > 0 ">
+                    <div class="row-item" v-if="(getFormData('ocpxActionType') == 180 || getFormData('ocpxActionType') == 53) 
+                    && groupTypeData.deepConversionTypes && groupTypeData.deepConversionTypes.length > 0 && getFormData('multipleBids')!==1 ">
                         <div class="hint-item">
                         </div>
                         <div class="label-item">
@@ -1493,13 +1551,13 @@
                         <div class="required-item"></div>
                         </div>
                         <div class="input-item">
-                        <a-form-item>  
+                        <a-form-item v-for="(item,index) in descriptionList" :key="index">  
                             <div style="position:relative">              
                             <a-textarea
                                 class="rending"
                                 placeholder="请输入广告语"
-                                @change="descriptionchange"
-                                v-decorator="['description',{rules: [ { required: true, message: '请填写广告语' }] } ]"
+                                @change="descriptionchange(item.value,index)"
+                                v-model.trim="item.value"
                                 :autosize="{ minRows: 2, maxRows: 6 }"
                                 :max-length="30"
                             ></a-textarea>
@@ -1517,11 +1575,17 @@
                                 margin-bottom: 0;
                               "
                             >
-                              {{ description.length  }}/30
+                              {{ item.value.length  }}/30
                               <!-- {{ getFormData('description').length  }}/30 -->
                             </p>
+                           <div style="position:absolute;right:-50px;top:-10px">
+                                <a-icon type="plus" @click="addDescription()" style="margin-right:15px"/>
+                                <a-icon type="minus" @click="removeDescription(index)" v-if="descriptionList.length>1"/>
+                           </div>
                             </div>
+
                         </a-form-item>
+
                         </div>
                     </div>  
                     <div class="row-item">
@@ -1782,6 +1846,7 @@ export default {
     },
     data() {
         return {
+            checkCpaBidBloon:false,
             appType: '0',
             uriCheck: false,
             programUnitCnt:60,
@@ -1934,7 +1999,9 @@ export default {
             appListValue: '',
             checkOptions: [],
             checkAllApp: false,
-            optionsAll: []
+            optionsAll: [],
+            multipleBidData:[],
+            descriptionList:[{value:""}]
            
             
         }
@@ -1973,14 +2040,20 @@ export default {
                 //     }
                 // })
                 this.getAppList()
-                getAction('/kuaishou/batch/getIsActivate', {
-                    accountId: this.accountId
-                }).then(res => {
-                    if (res.success) {
-                        this.groupTypeData = res.result
-                        
-                    }
-                })
+                let editRecordId=this.$route.query.id;
+                if(editRecordId){
+
+                }else{
+                    getAction('/kuaishou/batch/getIsActivate', {
+                        accountId: this.accountId
+                    }).then(res => {
+                        if (res.success) {
+                            this.groupTypeData = res.result
+                            
+                        }
+                    })
+                }
+               
                
 
                 getAction('/kuaishou/batch/getCreativeCategory', {
@@ -2041,6 +2114,63 @@ export default {
             },
     },
     methods: {
+        keyDown(event){
+            if((event.keyCode>=96&&event.keyCode<=105)||(event.keyCode>=109&&event.keyCode<=111)||event.keyCode==46||event.keyCode==45||(event.keyCode>=48&&event.keyCode<=57)){
+                
+            }else{
+                event.returnValue = false;
+            }
+        },
+        checkCpaBid(e) {
+            let z = /-/g;
+            let a = /\//g;
+            let d = /\./g;
+            if(e.target.value.startsWith("-")||e.target.value.endsWith("-")){
+                this.checkCpaBidBloon = true
+                return
+            }else if(e.target.value.startsWith(".")||e.target.value.endsWith(".")){
+                this.checkCpaBidBloon = true
+                return
+            }
+            if(e.target.value.match(a)&&e.target.value.match(z)){
+                this.checkCpaBidBloon = true
+            }else {
+                if(e.target.value.match(z)&&e.target.value.match(z).length>1){
+                    this.checkCpaBidBloon = true
+                }else if(e.target.value.match(a)&&e.target.value.match(a)){
+                    var arr = e.target.value.split('/')
+                    var arrary = []
+                    for (let i = 0; i < arr.length; i++) {
+                        if(arr[i].match(d)&&arr[i].match(d).length>1){
+                            arrary.push(true)
+                        }
+                    }
+                    if(arrary.length>0){
+                        this.checkCpaBidBloon = true
+                    }else{
+                        this.checkCpaBidBloon = false
+                    }
+                    
+                }else{
+                    this.checkCpaBidBloon = false
+                }
+            }
+
+            
+        },
+        checkOneBid(item) {
+            console.log(item)
+            let params = {...item}
+            params.cpaBid = params.cpaBid*1000
+            params.deepConversionBid = params.deepConversionBid*1000
+            postAction('/adsp/kuaiShouAppMultipleBids/saveOrUpdate',params).then(res=>{
+                if(res.success){
+                    this.$message.success('添加成功')
+                }else{
+                    this.$message.error('新增失败')
+                }
+            })
+        },
         convertOk() {
             var dataLink = []
             dataLink = this.convertList.filter((item) => {
@@ -2258,15 +2388,25 @@ export default {
                 appId:undefined
             })
         },
-        descriptionchange(e){
-            if(this.getData('description')){
-                this.$nextTick(()=>{
-                    this.form.setFieldsValue({
-                        description: this.getData('description').replace(/\s/g,'')
-                    })
-                })
-            }
-            this.description=e.target.value.replace(/\s/g,'')
+        addDescription(){
+            this.descriptionList.push({value:""})
+        },
+        removeDescription(index){
+            this.descriptionList.splice(index,1)
+        },
+        descriptionchange(val,index){
+            let data = val;
+            this.$nextTick(()=>{
+                this.descriptionList[index].value = data.replace(/\s/g,'')
+            })
+            // if(this.getData('description')){
+            //     this.$nextTick(()=>{
+            //         this.form.setFieldsValue({
+            //             description: this.getData('description').replace(/\s/g,'')
+            //         })
+            //     })
+            // }
+            // this.description=e.target.value.replace(/\s/g,'')
 
            
         },
@@ -2416,14 +2556,15 @@ export default {
             })
         },
         appIdChange(val){
-            //console.log(val)
+            console.log(val)
             this.siteList=[]
-            
             // this.getPageList(val)
             if(this.getFormData('singleAppid')==0){
-                if(val&&val.indexOf(0)>-1){
+                if(val&&val.findIndex(item=>item.key===0)>-1){
                     let appidArr=this.appList.map(item=>{
-                        return item.appId
+                        return {key:item.appId,label:`${item.platform === 1?'Android应用下载':item.platform === 2?'Android网页游戏':item.platform === 3?'iOS应用下载':'iOS网页游戏'}`
+                                +'\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0'+
+                                item.appName+'\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0'+item.appVersion}
                     })
                     // setTimeout(()=>{
                         
@@ -2435,18 +2576,46 @@ export default {
                         this.form.setFieldsValue({
                             appId:appidArr
                         })
+                        this.multipleBidData = appidArr.map(item=>{
+                            return {
+                                ...item,
+                                cpaBid:null,
+                                trackUrl:'',
+                                channelCode:'',
+                                appId:item.key,
+                                accountId:this.accountId,
+                                deepConversionBid:null
+
+                            }
+                        })
                     })
+                    
                 
+                }else{
+                    this.$nextTick(()=>{
+                        this.multipleBidData = val.map(item=>{
+                            return {
+                                ...item,
+                                cpaBid:null,
+                                trackUrl:'',
+                                channelCode:'',
+                                appId:item.key,
+                                accountId:this.accountId,
+                                deepConversionBid:null
+
+                            }
+                        })
+                    })
                 }
             }
             
-           if(val!=undefined || (val&&val.length>0) ){
+           if(val!=undefined && (val&&val.length>0) ){
                 if(this.getFormData('campaignType')==2){
                     
                     if(this.getFormData('singleAppid')==1){
-                        this.getIsActivate(val)
+                        this.getIsActivate(val.key)
                     }else{
-                        this.getIsActivate(val[0])
+                        this.getIsActivate(val[0].key)
                     }
                     
                 }
@@ -2689,10 +2858,34 @@ export default {
         goNext() {
 
         this.$nextTick(()=>{
-  
+
+            if(this.checkCpaBidBloon){
+                 this.$message.error('请正确填写必填项目')
+                 return 
+            }
+
             this.form.validateFields((err, values) => {
                 //console.log(values) 
-                if (!err) {     
+                if (!err) {  
+                    let isNotComplete = this.descriptionList.findIndex(item => {
+                        return item.value === ''
+                    })
+                    if (isNotComplete > -1) {
+                        this.$message.error('请正确填写必填项目,广告语未填')
+                        return
+                    } 
+
+
+                    if(values.multipleBids === 1) {
+                        let multipleBidData = this.multipleBidData.findIndex(item => {
+                            return item.cpaBid === null
+                        })
+                        if (multipleBidData > -1) {
+                            this.$message.error('请正确填写必填项目,广告语未填')
+                            return
+                        } 
+                    }
+                   
                     // console.log(values)              
                     this.goNextloading=true;
                    
@@ -2721,11 +2914,14 @@ export default {
                     //     values.beginTime=this.dateRange[0].format('YYYY-MM-DD');
                     //     values.endTime= this.dateRange[1].format('YYYY-MM-DD');
                     // }
+
+
+
                     if(this.getData('campaignType') === 2 ) {
-                        values.appIdArray=values.appId instanceof Array?JSON.stringify(values.appId):JSON.stringify([values.appId])
+                        values.appIdArray=values.appId instanceof Array?JSON.stringify(values.appId.map(item=>{return item.key})):JSON.stringify([values.appId.key])
                         values.appId=undefined;
                     }else if(this.getData('campaignType') === 7){
-                        values.appIdArray=values.appId instanceof Array?JSON.stringify(values.appId):JSON.stringify([values.appId])
+                        values.appIdArray=values.appId instanceof Array?JSON.stringify(values.appId.map(item=>{return item.key})):JSON.stringify([values.appId.key])
                         values.appId=undefined;
                         values.singleAppid = 1
                     }else {
@@ -2752,6 +2948,7 @@ export default {
                     }else {
                         values.appIds = JSON.stringify([])
                     }
+                    
                     // let excludePopulation=this.excludeSelectedKeys.map(item=>{
                     //     return item.id
                     // })
@@ -2767,7 +2964,9 @@ export default {
                         values.population=this.incluedSelectedRowKeys.length>0?JSON.stringify(this.incluedSelectedRowKeys):'[]';
                     }
                     
-                    
+                    values.description = JSON.stringify(this.descriptionList.map(item=>{
+                        return item.value
+                    }))
                     
                     values.useAppMarket=values.useAppMarket?'1':'0'
                     
@@ -2780,11 +2979,33 @@ export default {
                     }else if(this.sysType==1&&!this.getData('useAppMarket')){
                         values.appStore="[]"
                     }
+
+
                     if(values.cpaBid){
-                        values.cpaBid=parseInt(values.cpaBid*1000)
+                        if(values.cpaBid.includes('/')){
+                            let bidArr =  values.cpaBid.split('/')
+                            for (let index = 0; index < bidArr.length; index++) {
+                                bidArr[index] = bidArr[index]*1000
+                                
+                            }
+                            values.cpaBid = bidArr.join('/')
+                        }else if(values.cpaBid.includes('-')){
+                            let bidArr =  values.cpaBid.split('-')
+                            for (let index = 0; index < bidArr.length; index++) {
+                                bidArr[index] = bidArr[index]*1000
+                                
+                            }
+                            values.cpaBid = bidArr.join('-')
+                        }else{
+                            values.cpaBid = res.result.cpaBid*1000
+                        }
                     }else{
                         values.cpaBid=0
                     }
+
+
+
+
                     if(values.deepConversionBid){
                         values.deepConversionBid=parseInt(values.deepConversionBid*1000)
                     }else{
@@ -2909,7 +3130,7 @@ export default {
                 this.convertList = res.result.map(item => {
                 return {
                     ...item,
-                    convert_id: item.convert_id + ''
+                    convert_id: item.convert_id + ""
                 }
                 })
             }
@@ -3044,7 +3265,10 @@ export default {
                     this.sysType=res.result.platformOs
                     let fngetIsActivate=new Promise((resolve,reject)=>{
                         getAction('/kuaishou/batch/getIsActivate', {
-                            accountId: this.accountId
+                            accountId: this.accountId,
+                            campaignType: res.result.campaignType,
+                            appId:res.result.appIdArray?JSON.parse(res.result.appIdArray)[0]:null
+                            
                         }).then(res => {
                             if (res.success) {
                                 this.groupTypeData = res.result
@@ -3106,13 +3330,48 @@ export default {
                     this.optionsAll =  res.result.appIds ? (typeof  res.result.appIds == 'string' ? JSON.parse(res.result.appIds) : res.result.appIds) : []
                     this.checkAllApp = false
                     res.result.appInterest = res.result.appInterest?JSON.parse(res.result.appInterest):[]
-
+                    this.descriptionList = res.result.description.charAt(0) === '['?eval(res.result.description).map(item=>{
+                        return {value:item}
+                    }):[{value:res.result.description}]
+                    let cpaBid = "";
+                    if(res.result.cpaBid.includes('/')){
+                        let bidArr =  res.result.cpaBid.split('/')
+                        for (let index = 0; index < bidArr.length; index++) {
+                            bidArr[index] = bidArr[index]/1000
+                            
+                        }
+                        cpaBid = bidArr.join('/')
+                    }else if(res.result.cpaBid.includes('-')){
+                        let bidArr =  res.result.cpaBid.split('-')
+                        for (let index = 0; index < bidArr.length; index++) {
+                            bidArr[index] = bidArr[index]/1000
+                            
+                        }
+                        cpaBid = bidArr.join('-')
+                    }else{
+                        cpaBid = res.result.cpaBid/1000
+                    }
+                    this.multipleBidData = res.result.appInfoList ? res.result.appInfoList.map(item=>{
+                        
+                        return {
+                            appId:item.app_id,
+                            accountId:item.account_id,
+                            label:`${item.platform === 1?'Android应用下载':item.platform === 2?'Android网页游戏':item.platform === 3?'iOS应用下载':'iOS网页游戏'}`
+                                +'\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0'+
+                                item.app_name+'\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0'+item.app_version,
+                            cpaBid:item.cpa_bid?item.cpa_bid/1000:null,
+                            trackUrl:item.track_url,
+                            channelCode:item.channel_code,
+                            deepConversionBid:item.deep_conversion_bid?item.deep_conversion_bid/1000:null,
+                        }
+                    }):[]
                     setTimeout(()=>{                       
                         this.form.setFieldsValue({
                              ...res.result,
+                            appId:[],
                             creativeTag:res.result.creativeTag?JSON.parse(res.result.creativeTag):[],
                             isOpen:res.result.isOpen?res.result.isOpen:0,
-                            cpaBid:res.result.cpaBid/1000,
+                            
                             
                             deviceBrand:res.result.deviceBrand?JSON.parse(res.result.deviceBrand):[],
                             devicePrice:res.result.devicePrice?JSON.parse(res.result.devicePrice):[],
@@ -3129,10 +3388,12 @@ export default {
                             iosOsv:res.result.iosOsv?res.result.iosOsv:6,
                             url:res.result.url,
                             schemaUri:res.result.schemaUri,
-                            appId:res.result.singleAppid?JSON.parse(res.result.appIdArray)[0]:JSON.parse(res.result.appIdArray),
+                            appId:res.result.singleAppid?JSON.parse(res.result.appIdArray).map(item=>{return {key:item}})[0]:JSON.parse(res.result.appIdArray).map(item=>{return {key:item}}),
                             
                             appInterest:res.result.appInterest,
                             roiRatio:res.result.roiRatio?res.result.roiRatio:null,
+                            multipleBids:res.result.multipleBids,
+                            cpaBid:cpaBid,
                         })
                         
                     },100)
@@ -3256,7 +3517,6 @@ export default {
                 }
             })
         },
-
         clickTrackUrlFocus(){
             // //console.log('focus')
             this.clickTrackUrlTip=true;

+ 30 - 2
src/views/modules/autoLaunch/configLaunchList.vue

@@ -48,9 +48,30 @@
                         </a-spin>    
                         
                     </span>
-                    <span slot="cpaBid" slot-scope="text,record">
-                        {{text==0?record.roiRatio:text/1000}}
+                    <span slot="cpaType" slot-scope="text,record">
+                        {{record.cpaBid.includes('/')?'阶梯出价':record.cpaBid.includes('-')?"随机出价":"统一出价"}}
                     </span>
+                    <div slot="cpaBid" slot-scope="text,record">
+                        <!-- {{
+                          text==0?record.roiRatio:
+                          text.includes('/')? text.split 
+                        }} -->
+                        <span v-if="text===0">{{record.roiRatio}}</span>
+                        <span v-else-if="text.includes('/')">
+                            <!-- {{text.split('/')}} -->
+                            <span v-for="(item,index) in text.split('/')">
+                                {{item/1000+(index === text.split('/').length-1?'':'/')}}
+                            </span>
+                        </span>
+                        <span v-else-if="text.includes('-')">
+                            <!-- {{text.split('/')}} -->
+                            <span v-for="(item,index) in text.split('-')">
+                                {{item/1000+(index === text.split('-').length-1?'':'-')}}
+                            </span>
+                        </span>
+                        <span v-else>{{text/1000}}</span>
+                        
+                    </div>
                     <span slot="ocpxActionType" slot-scope="text">
                         {{text|ocpxActionType}}
                     </span>
@@ -189,6 +210,13 @@ const strategyColumns = [
         scopedSlots: { customRender: 'ocpxActionType' },
         // sorter:() => {}
     },
+     {
+        title: '出价类型',
+        dataIndex: 'cpaType',
+        align: 'center',    
+        scopedSlots: { customRender: 'cpaType' },
+        // sorter:() => {}
+    },
   {
         title: '出价',
         dataIndex: 'cpaBid',

+ 2 - 1
vue.config.js

@@ -88,7 +88,8 @@ module.exports = {
         // target:'http://118.24.244.213:8804',
         // target: 'http://192.168.1.43:8080', // 子安
         // target: 'http://192.168.1.8:8806', // 学超
-       target:'http://139.186.165.84:8806', //测试
+      //  target:'http://139.186.165.84:8806', //测试
+        // target:'http://apipre.tjyourong.com.cn', //预生产
 
         ws: false,