|
@@ -133,13 +133,14 @@
|
|
|
<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'>
|
|
|
- <!-- <a-select-option value="0">请选择目标应用</a-select-option> -->
|
|
|
+ <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 }}    {{ appModel.appVersion }}   {{
|
|
|
appModel.platform | platform
|
|
|
}}
|
|
|
</a-select-option>
|
|
|
</a-select>
|
|
|
+ <a-button type="primary" @click="addApplication" style="margin-left:10px" :loading="tongbuLoading">刷新应用</a-button>
|
|
|
</a-form-item>
|
|
|
|
|
|
</div>
|
|
@@ -179,7 +180,7 @@
|
|
|
<div class="hint-item"></div>
|
|
|
<div class="label-item">
|
|
|
<div class="text-item">转化追踪</div>
|
|
|
- <div class="required-item"></div>
|
|
|
+ <!-- <div class="required-item"></div> -->
|
|
|
</div>
|
|
|
<div class="input-item">
|
|
|
<a-form-item >
|
|
@@ -354,7 +355,7 @@
|
|
|
<template slot="populationType" slot-scope="populationType"> {{ populationType |customCrowdHandler}} </template>
|
|
|
</a-table>
|
|
|
</a-tab-pane>
|
|
|
-
|
|
|
+ <a-button slot="tabBarExtraContent" type='primary' @click="refreshPopulation" :loading='refreshPopulationLoading'>刷新人群包</a-button>
|
|
|
</a-tabs>
|
|
|
|
|
|
</div>
|
|
@@ -380,7 +381,28 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
-
|
|
|
+ <div class="row-item" >
|
|
|
+ <div class="hint-item"></div>
|
|
|
+ <div class="label-item">
|
|
|
+ <div class="text-item">是否开启智能扩量</div>
|
|
|
+ <div class="required-item"></div>
|
|
|
+ </div>
|
|
|
+ <div class="input-item">
|
|
|
+ <a-form-item>
|
|
|
+ <a-radio-group v-decorator="['isOpen', { initialValue: 0 }]" @change="isOpenChange">
|
|
|
+ <a-radio-button :value='0'>关闭</a-radio-button>
|
|
|
+ <a-radio-button :value="1">开启</a-radio-button>
|
|
|
+ </a-radio-group>
|
|
|
+ </a-form-item>
|
|
|
+ <div style="width: 400px; margin-top: 24px;" class="inventoryTypes" v-show="getFormData('isOpen')==1">
|
|
|
+ <div class="inventory-tags-lists-container">
|
|
|
+ <a-checkbox v-model="noAgeBreak">不可突破年龄</a-checkbox>
|
|
|
+ <a-checkbox v-model="noGenderBreak">不可突破性别</a-checkbox>
|
|
|
+ <a-checkbox v-model="noAreaBreak">不可突破地域</a-checkbox>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div class="ad-range2" v-if="useDirectional==0">
|
|
|
<div style="position:relative" class="ad-range2-title">
|
|
@@ -521,6 +543,7 @@
|
|
|
|
|
|
|
|
|
<a-select-option :value="2">行为数</a-select-option>
|
|
|
+ <!-- v-if="getFormData('campaignType') == 2 && groupTypeData.isActivate == 1 -->
|
|
|
<a-select-option :value="180"
|
|
|
v-if="getFormData('campaignType') == 2 && groupTypeData.isActivate == 1">激活</a-select-option>
|
|
|
<a-select-option :value="53" v-if="
|
|
@@ -563,7 +586,7 @@
|
|
|
<div class="input-item">
|
|
|
<a-form-item>
|
|
|
<a-select v-decorator="['deepConversionType']" allowClear style="width: 200px">
|
|
|
- <a-select-option v-for="(items, index) of groupTypeData.deepConversionTypes" :key="index">
|
|
|
+ <a-select-option v-for="(items, index) of groupTypeData.deepConversionTypes" :key="index" :value='items.deepConversionType'>
|
|
|
{{ items.desc }}</a-select-option>
|
|
|
</a-select>
|
|
|
</a-form-item>
|
|
@@ -643,6 +666,7 @@
|
|
|
<div class="label-item">
|
|
|
<div class="text-item">深度转化目标出价</div>
|
|
|
<!-- <div class="required-item"></div> -->
|
|
|
+ <!-- {{getFormData('deepConversionBid')}} -->
|
|
|
</div>
|
|
|
<div class="input-item">
|
|
|
<a-form-item>
|
|
@@ -1137,10 +1161,10 @@ let retargetColumns=[
|
|
|
},
|
|
|
{
|
|
|
title: '所属账号',
|
|
|
- dataIndex: 'accountName',
|
|
|
+ dataIndex: 'accountId',
|
|
|
sorter: true,
|
|
|
width: '40%',
|
|
|
- scopedSlots: { customRender: 'accountName' },
|
|
|
+ scopedSlots: { customRender: 'accountId' },
|
|
|
},
|
|
|
|
|
|
]
|
|
@@ -1159,6 +1183,7 @@ const plainOptions = [
|
|
|
label: '视频播放页广告'
|
|
|
},
|
|
|
];
|
|
|
+
|
|
|
export default {
|
|
|
components: {
|
|
|
// selectCheckAll,
|
|
@@ -1171,6 +1196,11 @@ export default {
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
+ tongbuLoading:false,
|
|
|
+ refreshPopulationLoading:false,
|
|
|
+ noAreaBreak:false,
|
|
|
+ noGenderBreak:false,
|
|
|
+ noAgeBreak:false,
|
|
|
regionList:[],
|
|
|
editRecordId:'',
|
|
|
spinning:false,
|
|
@@ -1197,7 +1227,7 @@ export default {
|
|
|
children: 'child',
|
|
|
},
|
|
|
createOptions: [],
|
|
|
- appStore: ['huawei', 'oppo', 'vivo', 'xiaomi', 'meizu', 'smartisan'],
|
|
|
+ appStore: ["huawei", "oppo", "vivo", "xiaomi", "meizu", "smartisan"],
|
|
|
sysType:1,
|
|
|
indeterminateDirectional:false,
|
|
|
checkAllDirectional:false,
|
|
@@ -1318,13 +1348,8 @@ export default {
|
|
|
// }
|
|
|
// })
|
|
|
this.getAppList()
|
|
|
- getAction('/kuaishou/batch/getIsActivate', {
|
|
|
- accountId: this.accountId
|
|
|
- }).then(res => {
|
|
|
- if (res.success) {
|
|
|
- this.groupTypeData = res.result
|
|
|
- }
|
|
|
- })
|
|
|
+
|
|
|
+
|
|
|
|
|
|
getAction('/kuaishou/batch/getCreativeCategory', {
|
|
|
accountId:this.accountId,
|
|
@@ -1339,7 +1364,8 @@ export default {
|
|
|
}else{
|
|
|
|
|
|
}
|
|
|
- }
|
|
|
+ },
|
|
|
+
|
|
|
},
|
|
|
computed: {
|
|
|
|
|
@@ -1383,8 +1409,71 @@ export default {
|
|
|
},
|
|
|
},
|
|
|
methods: {
|
|
|
+ refreshPopulation(){
|
|
|
+ if(this.accountId){
|
|
|
+ this.refreshPopulationLoading = true
|
|
|
+ // this.$refs.application.showApplication()
|
|
|
+ getAction('/kuaishou/batch/pullPopulationList', {
|
|
|
+ accountId: this.accountId
|
|
|
+ }).then(res => {
|
|
|
+ if (res.success) {
|
|
|
+ this.refreshPopulationLoading = false
|
|
|
+ this.$message.success(res.message)
|
|
|
+ this.retargetTabChange()
|
|
|
+ } else {
|
|
|
+ this.refreshPopulationLoading = false
|
|
|
+ this.$message.error(res.message)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ this.$message.error('请先选择账户')
|
|
|
+ }
|
|
|
+ },
|
|
|
+ addApplication() {
|
|
|
+ if(this.accountId){
|
|
|
+ this.tongbuLoading = true
|
|
|
+ // this.$refs.application.showApplication()
|
|
|
+ getAction('/kuaishou/batch/syncAppList', {
|
|
|
+ accountId: this.accountId
|
|
|
+ }).then(res => {
|
|
|
+ if (res.success) {
|
|
|
+ this.tongbuLoading = false
|
|
|
+ this.$message.success(res.message)
|
|
|
+ this.getAppList()
|
|
|
+ } else {
|
|
|
+ this.tongbuLoading = false
|
|
|
+ this.$message.error(res.message)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ this.$message.error('请先选择账户')
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ getIsActivate(val){
|
|
|
+ let params={};
|
|
|
+ params.accountId=this.accountId;
|
|
|
+ params.campaignType=this.getFormData('campaignType');
|
|
|
+ params.appId=val
|
|
|
+
|
|
|
+ getAction('/kuaishou/batch/getIsActivate',params).then(res => {
|
|
|
+ if (res.success) {
|
|
|
+ this.groupTypeData = res.result
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ isOpenChange(e){
|
|
|
+ this.noAreaBreak=false;
|
|
|
+ this.noGenderBreak=false;
|
|
|
+ this.noAgeBreak=false;
|
|
|
+ },
|
|
|
+ selectAllAppId(){
|
|
|
+
|
|
|
+ console.log(this.getFormData('appId'))
|
|
|
+ },
|
|
|
singleAppidChange(e){
|
|
|
- console.log(e.target.value,this.getFormData('appId'));
|
|
|
+ // console.log(e.target.value,this.getFormData('appId'));
|
|
|
this.form.setFieldsValue({
|
|
|
appId:undefined
|
|
|
})
|
|
@@ -1540,7 +1629,38 @@ export default {
|
|
|
this.siteList=[]
|
|
|
|
|
|
// this.getPageList(val)
|
|
|
+ if(this.getFormData('singleAppid')==0){
|
|
|
+ if(val.indexOf(0)>-1){
|
|
|
+ let appidArr=this.appList.map(item=>{
|
|
|
+ return item.appId
|
|
|
+ })
|
|
|
+ // setTimeout(()=>{
|
|
|
+
|
|
|
+ // this.form.setFieldsValue({
|
|
|
+ // appId:appidArr
|
|
|
+ // })
|
|
|
+ // },0)
|
|
|
+ this.$nextTick(()=>{
|
|
|
+ this.form.setFieldsValue({
|
|
|
+ appId:appidArr
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ if(val!=undefined || val.length>0){
|
|
|
+ if(this.getFormData('campaignType')==2){
|
|
|
+
|
|
|
+ if(this.getFormData('singleAppid')==1){
|
|
|
+ this.getIsActivate(val)
|
|
|
+ }else{
|
|
|
+ this.getIsActivate(val[0])
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
},
|
|
|
disabledDate(current) {
|
|
|
|
|
@@ -1624,7 +1744,7 @@ export default {
|
|
|
ele.key=ele.orientationId
|
|
|
ele.id= ele.orientationId
|
|
|
ele.name=ele.orientationName+"("+ele.orientationId+")"
|
|
|
- ele.accountName=this.accountInfo.title
|
|
|
+ // ele.accountName=this.accountInfo.title
|
|
|
ele.accountId=this.accountId
|
|
|
})
|
|
|
// this.retargetData=res.data;
|
|
@@ -1759,7 +1879,7 @@ export default {
|
|
|
this.$nextTick(()=>{
|
|
|
|
|
|
this.form.validateFields((err, values) => {
|
|
|
-
|
|
|
+ console.log(values)
|
|
|
if (!err) {
|
|
|
this.goNextloading=true;
|
|
|
if(this.district!='NONE'){
|
|
@@ -1815,10 +1935,15 @@ export default {
|
|
|
// }
|
|
|
if(this.sysType==1&&this.getData('useAppMarket')){
|
|
|
values.appStore=JSON.stringify(this.appStore)
|
|
|
+ }else if(this.sysType==1&&!this.getData('useAppMarket')){
|
|
|
+ values.appStore="[]"
|
|
|
}
|
|
|
if(values.cpaBid){
|
|
|
values.cpaBid=parseInt(values.cpaBid*1000)
|
|
|
}
|
|
|
+ if(values.deepConversionBid){
|
|
|
+ values.deepConversionBid=parseInt(values.deepConversionBid*1000)
|
|
|
+ }
|
|
|
|
|
|
if(values.creativeCategory&&values.creativeCategory.length>0){
|
|
|
values.creativeCategory=values.creativeCategory[values.creativeCategory.length-1]
|
|
@@ -1829,6 +1954,11 @@ export default {
|
|
|
values.accountId = this.accountId
|
|
|
|
|
|
values.creativeTag=values.creativeTag?JSON.stringify(values.creativeTag):undefined
|
|
|
+
|
|
|
+ values.noAreaBreak=this.noAreaBreak?1:0
|
|
|
+ values.noGenderBreak=this.noGenderBreak?1:0
|
|
|
+ values.noAgeBreak=this.noAgeBreak?1:0
|
|
|
+
|
|
|
console.log('Received values of form: ', values)
|
|
|
let url=''
|
|
|
if(this.editRecordId){
|
|
@@ -2040,16 +2170,48 @@ export default {
|
|
|
this.accountId=res.result.accountId;
|
|
|
this.description=res.result.description
|
|
|
res.result.creativeCategory=[parseInt(res.result.creativeCategory/10000),parseInt(res.result.creativeCategory/100),res.result.creativeCategory]
|
|
|
+
|
|
|
+ new Promise((resolve,reject)=>{
|
|
|
+ getAction('/kuaishou/batch/getIsActivate', {
|
|
|
+ accountId: this.accountId
|
|
|
+ }).then(res => {
|
|
|
+ if (res.success) {
|
|
|
+ this.groupTypeData = res.result
|
|
|
+ resolve()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }).then(r=>{
|
|
|
+
|
|
|
+
|
|
|
this.form.setFieldsValue({
|
|
|
...res.result,
|
|
|
creativeTag:res.result.creativeTag?JSON.parse(res.result.creativeTag):undefined,
|
|
|
useAppMarket:res.result.useAppMarket==1?true:false,
|
|
|
-
|
|
|
+ isOpen:res.result.isOpen?res.result.isOpen:0,
|
|
|
cpaBid:res.result.cpaBid/1000,
|
|
|
appId:res.singleAppid?JSON.parse(res.result.appIdArray)[0]:JSON.parse(res.result.appIdArray)
|
|
|
})
|
|
|
+ if((this.getFormData('ocpxActionType') == 180 || this.getFormData('ocpxActionType') == 53) && this.groupTypeData.deepConversionTypes&&this.groupTypeData.deepConversionTypes.length > 0){
|
|
|
+ setTimeout(()=>{
|
|
|
+ this.form.setFieldsValue({
|
|
|
+ deepConversionType:res.result.deepConversionType,
|
|
|
+ })
|
|
|
+ if(res.result.deepConversionBid!=null){
|
|
|
+ this.form.setFieldsValue({
|
|
|
+ deepConversionBid:res.result.deepConversionBid/1000,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },0)
|
|
|
+ }
|
|
|
+
|
|
|
+ console.log(this.getFormData('deepConversionBid'))
|
|
|
+ this.noAreaBreak=res.result.noAreaBreak?true:false
|
|
|
+ this.noGenderBreak=res.result.noGenderBreak?true:false
|
|
|
+ this.noAgeBreak=res.result.noAgeBreak?true:false
|
|
|
+ // this.appStore=res.result.appStore?JSON.parse(res.result.appStore):this.appStore
|
|
|
this.ageArr=[];
|
|
|
this.ageArr=JSON.parse(JSON.stringify(ageArr))
|
|
|
+
|
|
|
let agesRange=res.result.agesRange?JSON.parse(res.result.agesRange):[]
|
|
|
if(agesRange.length>0){
|
|
|
agesRange.forEach((item,index)=>{
|
|
@@ -2111,11 +2273,15 @@ export default {
|
|
|
|
|
|
|
|
|
this.spinning=false;
|
|
|
+
|
|
|
+
|
|
|
+ })
|
|
|
})
|
|
|
}
|
|
|
},
|
|
|
|
|
|
getpopulationlist(){
|
|
|
+ this.retargetDataAll=[]
|
|
|
getAction('/kuaishou/batch/getPopulationList',{
|
|
|
accountId:this.accountId
|
|
|
}).then((res)=>{
|
|
@@ -2130,13 +2296,22 @@ export default {
|
|
|
ele.accountId=this.accountId
|
|
|
})
|
|
|
// this.retargetData=res.data;
|
|
|
- this.retargetDataAll=[...this.retargetDataAll,...res.result];
|
|
|
+ // this.retargetDataAll=[...this.retargetDataAll,...res.result];
|
|
|
+ this.retargetDataAll=[...res.result];
|
|
|
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
},
|
|
|
-
|
|
|
+ created() {
|
|
|
+ if(this.$route){
|
|
|
+ let editRecordId=this.$route.query.id;
|
|
|
+ if(editRecordId){
|
|
|
+ this.editRecordId=editRecordId;
|
|
|
+ this.editEchoPage()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
mounted() {
|
|
|
this.accountHttp()
|
|
|
|
|
@@ -2146,13 +2321,7 @@ export default {
|
|
|
|
|
|
this.strategyName ='[预设]_'+ strategyNamepart+'_' + moment().format('MM_DD_hh:mm') ;
|
|
|
this.getActionBarText()
|
|
|
- if(this.$route){
|
|
|
- let editRecordId=this.$route.query.id;
|
|
|
- if(editRecordId){
|
|
|
- this.editRecordId=editRecordId;
|
|
|
- this.editEchoPage()
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
},
|
|
|
|
|
@@ -2178,55 +2347,55 @@ export default {
|
|
|
customCrowdHandler(val){
|
|
|
let str=''
|
|
|
switch (val) {
|
|
|
- case '1':
|
|
|
+ case 1:
|
|
|
str='上传人群'
|
|
|
break;
|
|
|
- case '2':
|
|
|
+ case 2:
|
|
|
str='广告人群'
|
|
|
break;
|
|
|
- case '3':
|
|
|
+ case 3:
|
|
|
str='主题专区'
|
|
|
break;
|
|
|
- case '4':
|
|
|
+ case 4:
|
|
|
str='逻辑规则'
|
|
|
break;
|
|
|
- case '5':
|
|
|
+ case 5:
|
|
|
str='人群扩展'
|
|
|
break;
|
|
|
- case '6':
|
|
|
+ case 6:
|
|
|
str='平台定制'
|
|
|
break;
|
|
|
- case '7':
|
|
|
+ case 7:
|
|
|
str='定制付费'
|
|
|
break;
|
|
|
- case '8':
|
|
|
+ case 8:
|
|
|
str='网红粉丝类别'
|
|
|
break;
|
|
|
- case '9':
|
|
|
+ case 9:
|
|
|
str='内容付费行为'
|
|
|
break;
|
|
|
- case '10':
|
|
|
+ case 10:
|
|
|
str='移动应用安装'
|
|
|
break;
|
|
|
- case '11':
|
|
|
+ case 11:
|
|
|
str='快手使用活跃度'
|
|
|
break;
|
|
|
- case '12':
|
|
|
+ case 12:
|
|
|
str='行业分类'
|
|
|
break;
|
|
|
- case '13':
|
|
|
+ case 13:
|
|
|
str='商业兴趣'
|
|
|
break;
|
|
|
- case '14':
|
|
|
+ case 14:
|
|
|
str='固化标签'
|
|
|
break;
|
|
|
- case '15':
|
|
|
+ case 15:
|
|
|
str='行业偏好'
|
|
|
break;
|
|
|
- case '16':
|
|
|
+ case 16:
|
|
|
str='第三方标签'
|
|
|
break;
|
|
|
- case '17':
|
|
|
+ case 17:
|
|
|
str='产品关键词'
|
|
|
break;
|
|
|
|
|
@@ -2297,6 +2466,9 @@ export default {
|
|
|
.ant-checkbox-wrapper:first-child {
|
|
|
padding: 0 15px 5px;
|
|
|
}
|
|
|
+ .ant-checkbox-wrapper + .ant-checkbox-wrapper {
|
|
|
+ margin-left: 0px;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
</style>
|