|
@@ -13,7 +13,23 @@
|
|
<div class="moduler">
|
|
<div class="moduler">
|
|
<div class="moduler-title">目标应用</div>
|
|
<div class="moduler-title">目标应用</div>
|
|
<div class="ad-range">
|
|
<div class="ad-range">
|
|
- <div class="row-item" v-if="strategyInfo.marketingGoal=='2'">
|
|
|
|
|
|
+ <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-model="sysType" @change="sysTypeChange">
|
|
|
|
+ <a-radio-button :value="1">安卓</a-radio-button>
|
|
|
|
+ <a-radio-button :value="2">IOS</a-radio-button>
|
|
|
|
+ </a-radio-group>
|
|
|
|
+ </a-form-item>
|
|
|
|
+
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="row-item" v-if="strategyInfo.marketingGoal=='2'||strategyInfo.marketingGoal=='7'">
|
|
<div class="hint-item"></div>
|
|
<div class="hint-item"></div>
|
|
<div class="label-item">
|
|
<div class="label-item">
|
|
<div class="text-item">选择应用</div>
|
|
<div class="text-item">选择应用</div>
|
|
@@ -23,7 +39,7 @@
|
|
<a-form-item>
|
|
<a-form-item>
|
|
<a-select v-decorator="['appIds', { rules: [{ required: true, message: '请选择目标应用' }] }]" showSearch allowClear
|
|
<a-select v-decorator="['appIds', { rules: [{ required: true, message: '请选择目标应用' }] }]" showSearch allowClear
|
|
placeholder="选择应用目标" optionFilterProp="children" style="width: 500px" mode='multiple' :maxTagCount='1'
|
|
placeholder="选择应用目标" optionFilterProp="children" style="width: 500px" mode='multiple' :maxTagCount='1'
|
|
- :filterOption="filterOption">
|
|
|
|
|
|
+ :filterOption="filterOption" @change="appIdChange">
|
|
<!-- <a-select-option value="0">请选择目标应用</a-select-option> -->
|
|
<!-- <a-select-option value="0">请选择目标应用</a-select-option> -->
|
|
<a-select-option v-for="appModel in appList" :key="appModel.appId" :value="appModel.appId">
|
|
<a-select-option v-for="appModel in appList" :key="appModel.appId" :value="appModel.appId">
|
|
{{ appModel.appName }}    {{ appModel.appVersion }}   {{
|
|
{{ appModel.appName }}    {{ appModel.appVersion }}   {{
|
|
@@ -52,10 +68,10 @@
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- <div class="row-item" v-if="strategyInfo.marketingGoal == '3'">
|
|
|
|
|
|
+ <div class="row-item" v-if="strategyInfo.marketingGoal == '3'||strategyInfo.marketingGoal == '4'||strategyInfo.marketingGoal == '5'">
|
|
<div class="hint-item"></div>
|
|
<div class="hint-item"></div>
|
|
<div class="label-item">
|
|
<div class="label-item">
|
|
- <div class="text-item">{{strategyInfo.marketingGoal == 3 ? ' ' : '链接'}}</div>
|
|
|
|
|
|
+ <div class="text-item">链接</div>
|
|
<!-- <div class="required-item"></div> -->
|
|
<!-- <div class="required-item"></div> -->
|
|
</div>
|
|
</div>
|
|
<div class="input-item">
|
|
<div class="input-item">
|
|
@@ -84,8 +100,19 @@
|
|
|
|
|
|
</div>
|
|
</div>
|
|
<div class="moduler">
|
|
<div class="moduler">
|
|
- <div class="moduler-title">用户定向</div>
|
|
|
|
- <div class="ad-range">
|
|
|
|
|
|
+ <div class="moduler-title">用户定向
|
|
|
|
+ <div style="margin-left:30px;position:relative;top:-2px">
|
|
|
|
+ <a-radio-group v-model="useDirectional" @change="useDirectionalChange">
|
|
|
|
+ <a-radio :value="1">
|
|
|
|
+ 不使用定向
|
|
|
|
+ </a-radio>
|
|
|
|
+ <a-radio :value="0">
|
|
|
|
+ 使用定向包
|
|
|
|
+ </a-radio>
|
|
|
|
+ </a-radio-group>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="ad-range" v-if="useDirectional==1">
|
|
<div class="row-item">
|
|
<div class="row-item">
|
|
<div class="hint-item"></div>
|
|
<div class="hint-item"></div>
|
|
<div class="label-item">
|
|
<div class="label-item">
|
|
@@ -173,7 +200,7 @@
|
|
<a-radio-button value="3">同时定向排除</a-radio-button>
|
|
<a-radio-button value="3">同时定向排除</a-radio-button>
|
|
</a-radio-group>
|
|
</a-radio-group>
|
|
</a-form-item>
|
|
</a-form-item>
|
|
- <div class="dingxiang_paichu" v-if="getFormData('customCrowd')!='0'" style="width:60%">
|
|
|
|
|
|
+ <div class="dingxiang_paichu" v-if="getFormData('customCrowd')&&getFormData('customCrowd')!='0'" style="width:60%">
|
|
<a-tabs v-model="tabKey" @change="retargetTabChange" >
|
|
<a-tabs v-model="tabKey" @change="retargetTabChange" >
|
|
<a-tab-pane key="1" tab="定向池" v-if="getFormData('customCrowd')!='2'">
|
|
<a-tab-pane key="1" tab="定向池" v-if="getFormData('customCrowd')!='2'">
|
|
<a-table
|
|
<a-table
|
|
@@ -218,6 +245,29 @@
|
|
|
|
|
|
|
|
|
|
</div>
|
|
</div>
|
|
|
|
+ <div class="ad-range2" v-if="useDirectional==0">
|
|
|
|
+ <div style="position:relative" class="ad-range2-title">
|
|
|
|
+ <span>当前选择模板数量:{{directionalCheckedList.length}}</span>
|
|
|
|
+ <!-- <a-checkbox :indeterminate="indeterminateDirectional" :checked="checkAllDirectional" @change="onCheckAllDirectionalChange" class="quanxuanDirectional">
|
|
|
|
+ <span>点击全选</span>
|
|
|
|
+ </a-checkbox> -->
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <a-spin :spinning="directionalSpinning">
|
|
|
|
+ <div class="title-list">
|
|
|
|
+
|
|
|
|
+ <a-checkbox-group v-model="directionalCheckedList" @change="directionalChange">
|
|
|
|
+ <div class="title-item" v-for="(item,index) in directionalList" :key='index'>
|
|
|
|
+ <label>
|
|
|
|
+ <a-checkbox :value='item.id'>
|
|
|
|
+ {{item.templateName+'_('+item.id+')'}}
|
|
|
|
+ </a-checkbox>
|
|
|
|
+ </label>
|
|
|
|
+ </div>
|
|
|
|
+ </a-checkbox-group>
|
|
|
|
+ </div>
|
|
|
|
+ </a-spin>
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="moduler">
|
|
<div class="moduler">
|
|
@@ -497,7 +547,7 @@
|
|
<div style="width: 400px; margin-top: 24px;" class="inventoryTypes" v-show="adposition=='inventoryTypes'">
|
|
<div style="width: 400px; margin-top: 24px;" class="inventoryTypes" v-show="adposition=='inventoryTypes'">
|
|
<div class="inventory-tags-lists-header">
|
|
<div class="inventory-tags-lists-header">
|
|
<a-checkbox :indeterminate="indeterminate" :checked="checkAll" @change="onCheckAllChange">
|
|
<a-checkbox :indeterminate="indeterminate" :checked="checkAll" @change="onCheckAllChange">
|
|
- </a-checkbox>
|
|
|
|
|
|
+ </a-checkbox>
|
|
<div class="inventory-tags-lists-name"><strong>APP名称</strong></div>
|
|
<div class="inventory-tags-lists-name"><strong>APP名称</strong></div>
|
|
</div>
|
|
</div>
|
|
<div class="inventory-tags-lists-container">
|
|
<div class="inventory-tags-lists-container">
|
|
@@ -507,30 +557,72 @@
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- <div class="row-item">
|
|
|
|
|
|
+ <div class="row-item" v-if="siteList.length">
|
|
<div class="hint-item"></div>
|
|
<div class="hint-item"></div>
|
|
<div class="label-item">
|
|
<div class="label-item">
|
|
<div class="text-item">下载详情</div>
|
|
<div class="text-item">下载详情</div>
|
|
<!-- <div class="required-item"></div> -->
|
|
<!-- <div class="required-item"></div> -->
|
|
</div>
|
|
</div>
|
|
|
|
+ <div class="input-item" >
|
|
|
|
+ <div v-for="(item,index) in siteList" :key="index" :style="index==(siteList.length-1)?{'margin-bottom':'0px'}:{'margin-bottom':'20px'}">
|
|
|
|
+ <a-form-item>
|
|
|
|
+ <a-select
|
|
|
|
+ v-model="item.siteId"
|
|
|
|
+ showSearch
|
|
|
|
+ allowClear
|
|
|
|
+ placeholder="选择应用下载详情页"
|
|
|
|
+ optionFilterProp="children"
|
|
|
|
+ :filterOption="filterOption"
|
|
|
|
+ style="width:400px"
|
|
|
|
+ >
|
|
|
|
+ <a-select-option v-for="appModel in item.siteList" :key="appModel.siteId" :value="appModel.siteId">
|
|
|
|
+ {{ appModel.name }}
|
|
|
|
+ </a-select-option>
|
|
|
|
+
|
|
|
|
+ </a-select>
|
|
|
|
+ <span style="margin-left:30px;display:inline-block">
|
|
|
|
+ {{'appId:'+item.appId}}
|
|
|
|
+ </span>
|
|
|
|
+ </a-form-item>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ </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> -->
|
|
|
|
+ <!-- http://ptd.yoyuan.com.cn/apk/download/1119929/YouYuan_1119929.apk -->
|
|
|
|
+ </div>
|
|
<div class="input-item">
|
|
<div class="input-item">
|
|
<a-form-item>
|
|
<a-form-item>
|
|
- <a-input v-decorator="['videoPlayTrackUrl', {rules:[ {
|
|
|
|
- required: getFormData('bidType')=='10',
|
|
|
|
- validator: this.validateURL,
|
|
|
|
- },]}]" />
|
|
|
|
|
|
+ <a-input v-decorator="['clickTrackUrl', {rules:validationRules.url}]" />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row-item">
|
|
<div class="row-item">
|
|
<div class="hint-item"></div>
|
|
<div class="hint-item"></div>
|
|
<div class="label-item">
|
|
<div class="label-item">
|
|
- <div class="text-item">监测链接</div>
|
|
|
|
|
|
+ <div class="text-item">开始播放监测链接</div>
|
|
<!-- <div class="required-item"></div> -->
|
|
<!-- <div class="required-item"></div> -->
|
|
</div>
|
|
</div>
|
|
<div class="input-item">
|
|
<div class="input-item">
|
|
<a-form-item>
|
|
<a-form-item>
|
|
- <a-input v-decorator="['videoPlayTrackUrl', {rules:validationRules.url}]" />
|
|
|
|
|
|
+ <a-input v-decorator="['impressionUrl', {rules:validationRules.url}]" />
|
|
|
|
+ </a-form-item>
|
|
|
|
+ </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-input v-decorator="['actionbarClickUrl', {rules:validationRules.url}]" />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -544,9 +636,9 @@
|
|
<div class="moduler">
|
|
<div class="moduler">
|
|
<!-- <div class="moduler-title">计划名称</div> -->
|
|
<!-- <div class="moduler-title">计划名称</div> -->
|
|
<div class="opt">
|
|
<div class="opt">
|
|
- <a-button type="default" style="margin-right:15px" @click="goBack">取消</a-button>
|
|
|
|
|
|
+ <a-button type="default" style="margin-right:15px" @click="goBack">上一步</a-button>
|
|
|
|
|
|
- <a-button type="primary" @click="goNext" :loading="goNextloading">下一步</a-button>
|
|
|
|
|
|
+ <a-button type="primary" @click="goNext" :loading="goNextloading">前往预览</a-button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
@@ -594,7 +686,31 @@
|
|
{{item.convert_name}}</a-select-option>
|
|
{{item.convert_name}}</a-select-option>
|
|
</a-select>
|
|
</a-select>
|
|
</a-form-item>
|
|
</a-form-item>
|
|
- </a-modal>
|
|
|
|
|
|
+ </a-modal>
|
|
|
|
+
|
|
|
|
+ <a-modal v-model="useDirectionalVisible" title="选择定向包" @ok="selectDirectionalOk" width='600px' height='500px'>
|
|
|
|
+ <div style="position:relative">
|
|
|
|
+ <span>当前选择模板数量:{{directionalCheckedList.length}}</span>
|
|
|
|
+ <a-checkbox :indeterminate="indeterminateDirectional" :checked="checkAllDirectional" @change="onCheckAllDirectionalChange" class="quanxuanDirectional">
|
|
|
|
+ <span>点击全选</span>
|
|
|
|
+ </a-checkbox>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <a-spin :spinning="directionalSpinning">
|
|
|
|
+ <div class="title-list">
|
|
|
|
+
|
|
|
|
+ <a-checkbox-group v-model="directionalCheckedList" @change="directionalChange">
|
|
|
|
+ <div class="title-item" v-for="(item,index) in directionalList" :key='index'>
|
|
|
|
+ <label>
|
|
|
|
+ <a-checkbox :value='item.id'>
|
|
|
|
+ {{item.templateName+'_('+item.id+')'}}
|
|
|
|
+ </a-checkbox>
|
|
|
|
+ </label>
|
|
|
|
+ </div>
|
|
|
|
+ </a-checkbox-group>
|
|
|
|
+ </div>
|
|
|
|
+ </a-spin>
|
|
|
|
+ </a-modal>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
@@ -602,11 +718,12 @@
|
|
<script>
|
|
<script>
|
|
import moment from 'moment'
|
|
import moment from 'moment'
|
|
import { getAction, postAction, downFile, downFilePost } from '@/api/manage'
|
|
import { getAction, postAction, downFile, downFilePost } from '@/api/manage'
|
|
-import radioCheck from './radioCheck';
|
|
|
|
|
|
+import radioCheck from './components/radioCheck';
|
|
import linkMultiSelect from './components/linkMultiSelect'
|
|
import linkMultiSelect from './components/linkMultiSelect'
|
|
import singleLayersSelecte from './components/singleLayerSelecte'
|
|
import singleLayersSelecte from './components/singleLayerSelecte'
|
|
import scheduleTime from '@/components/formComponents/toutiaoTime'
|
|
import scheduleTime from '@/components/formComponents/toutiaoTime'
|
|
import qs from 'qs'
|
|
import qs from 'qs'
|
|
|
|
+import { filter } from 'vue/types/umd';
|
|
var str = ""
|
|
var str = ""
|
|
for (let i = 0; i < 7*24; i++) {
|
|
for (let i = 0; i < 7*24; i++) {
|
|
str+='0'
|
|
str+='0'
|
|
@@ -725,6 +842,15 @@ export default {
|
|
},
|
|
},
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
|
|
+ sysType:1,
|
|
|
|
+ indeterminateDirectional:false,
|
|
|
|
+ checkAllDirectional:false,
|
|
|
|
+
|
|
|
|
+ directionalList:[],
|
|
|
|
+ directionalSpinning:false,
|
|
|
|
+ directionalCheckedList:[],
|
|
|
|
+ useDirectional:1,
|
|
|
|
+ siteList:[],
|
|
tabKey:'1',
|
|
tabKey:'1',
|
|
adposition:1,
|
|
adposition:1,
|
|
groupTypeData:null,
|
|
groupTypeData:null,
|
|
@@ -736,6 +862,7 @@ export default {
|
|
strategyInfo:{},
|
|
strategyInfo:{},
|
|
accountInfo:{},
|
|
accountInfo:{},
|
|
appList: [],
|
|
appList: [],
|
|
|
|
+ appListAll:[],
|
|
dateRange: [moment(), moment()],
|
|
dateRange: [moment(), moment()],
|
|
scheduleTime: '',
|
|
scheduleTime: '',
|
|
scheduleTimeData:str,
|
|
scheduleTimeData:str,
|
|
@@ -818,7 +945,7 @@ export default {
|
|
}],
|
|
}],
|
|
},
|
|
},
|
|
|
|
|
|
-
|
|
|
|
|
|
+ useDirectionalVisible:false,
|
|
}
|
|
}
|
|
},
|
|
},
|
|
watch: {
|
|
watch: {
|
|
@@ -862,8 +989,59 @@ export default {
|
|
}),
|
|
}),
|
|
};
|
|
};
|
|
},
|
|
},
|
|
- },
|
|
|
|
|
|
+ },
|
|
methods: {
|
|
methods: {
|
|
|
|
+ directionalChange(checkedList) {
|
|
|
|
+ // console.log(checkedList)
|
|
|
|
+ this.indeterminateDirectional = !!checkedList.length && checkedList.length < this.directionalList.length;
|
|
|
|
+ this.checkAllDirectional = checkedList.length === this.directionalList.length;
|
|
|
|
+ },
|
|
|
|
+ onCheckAllDirectionalChange(e) {
|
|
|
|
+ console.log(e)
|
|
|
|
+ let valueOption=[];
|
|
|
|
+ valueOption=this.directionalList.map(item=>{
|
|
|
|
+ return item.id
|
|
|
|
+ })
|
|
|
|
+ Object.assign(this, {
|
|
|
|
+ directionalCheckedList: e.target.checked ? valueOption : [],
|
|
|
|
+ indeterminateDirectional: false,
|
|
|
|
+ checkAllDirectional: e.target.checked,
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ selectDirectionalOk(e){
|
|
|
|
+ this.useDirectionalVisible=false
|
|
|
|
+ },
|
|
|
|
+ useDirectionalChange(e){
|
|
|
|
+ console.log(e);
|
|
|
|
+ if(e.target.value==0){
|
|
|
|
+ // this.useDirectionalVisible=true;
|
|
|
|
+ this.getUserDirectional()
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ // 获取定向包
|
|
|
|
+ getUserDirectional(){
|
|
|
|
+ getAction('/kuaishou/batch/getDirectionalTemplate',{
|
|
|
|
+ accountId:this.accountInfo.value
|
|
|
|
+ }).then(res=>{
|
|
|
|
+ console.log(res);
|
|
|
|
+ this.directionalList=res.result
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ appIdChange(val){
|
|
|
|
+ console.log(val)
|
|
|
|
+ this.siteList=[]
|
|
|
|
+ if(val.length){
|
|
|
|
+ val.forEach(item=>{
|
|
|
|
+ this.siteList.push({
|
|
|
|
+ siteList:[],
|
|
|
|
+ appId:item,
|
|
|
|
+ siteId:''
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+ this.getPageList(val)
|
|
|
|
+ }
|
|
|
|
+ },
|
|
disabledDate(current) {
|
|
disabledDate(current) {
|
|
|
|
|
|
return current && current < moment().subtract(1, 'day')
|
|
return current && current < moment().subtract(1, 'day')
|
|
@@ -917,6 +1095,8 @@ export default {
|
|
checkAll: e.target.checked,
|
|
checkAll: e.target.checked,
|
|
});
|
|
});
|
|
},
|
|
},
|
|
|
|
+
|
|
|
|
+
|
|
customCrowdChange(e){
|
|
customCrowdChange(e){
|
|
console.log(e);
|
|
console.log(e);
|
|
if(e.target.value=='1' || e.target.value=='2'){
|
|
if(e.target.value=='1' || e.target.value=='2'){
|
|
@@ -999,17 +1179,16 @@ export default {
|
|
handleOk(e) {
|
|
handleOk(e) {
|
|
this.visible=false;
|
|
this.visible=false;
|
|
this.$router.push({path:'/LaunchHousekeeper/setProjectCreate'})
|
|
this.$router.push({path:'/LaunchHousekeeper/setProjectCreate'})
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+
|
|
},
|
|
},
|
|
handleCancel(e) {
|
|
handleCancel(e) {
|
|
this.visible = false;
|
|
this.visible = false;
|
|
},
|
|
},
|
|
// 直达链接是否启用
|
|
// 直达链接是否启用
|
|
useOpenUrlChange(){
|
|
useOpenUrlChange(){
|
|
- this.form.setFieldsValue({
|
|
|
|
- openUrl:''
|
|
|
|
- })
|
|
|
|
|
|
+ this.form.setFieldsValue({
|
|
|
|
+ openUrl:''
|
|
|
|
+ })
|
|
},
|
|
},
|
|
|
|
|
|
//获取表单的某一个属性值
|
|
//获取表单的某一个属性值
|
|
@@ -1018,12 +1197,12 @@ export default {
|
|
},
|
|
},
|
|
dateChange(date, dateString) {
|
|
dateChange(date, dateString) {
|
|
// console.log(date,dateString)
|
|
// console.log(date,dateString)
|
|
- this.form.getFieldDecorator('beginTime')
|
|
|
|
- this.form.getFieldDecorator('endTime')
|
|
|
|
- this.form.setFieldsValue({
|
|
|
|
- beginTime: date[0].format('YYYY-MM-DD HH:mm'),
|
|
|
|
- endTime: date[1].format('YYYY-MM-DD HH:mm'),
|
|
|
|
- })
|
|
|
|
|
|
+ this.form.getFieldDecorator('beginTime')
|
|
|
|
+ this.form.getFieldDecorator('endTime')
|
|
|
|
+ this.form.setFieldsValue({
|
|
|
|
+ beginTime: date[0].format('YYYY-MM-DD HH:mm'),
|
|
|
|
+ endTime: date[1].format('YYYY-MM-DD HH:mm'),
|
|
|
|
+ })
|
|
},
|
|
},
|
|
|
|
|
|
|
|
|
|
@@ -1073,8 +1252,9 @@ export default {
|
|
|
|
|
|
|
|
|
|
goBack() {
|
|
goBack() {
|
|
- this.$router.replace('/modules/LaunchHousekeeper/LaunchHousekeeperList')
|
|
|
|
- this.$bus.$emit('remove', '/LaunchHousekeeper/setProjectDirectional')
|
|
|
|
|
|
+ // this.$router.replace('/autoLaunch/autoLaunchList')
|
|
|
|
+ // this.$bus.$emit('remove', '/autoLaunch/newStrategy')
|
|
|
|
+ this.$parent.currentTabComponent='createStrategy'
|
|
},
|
|
},
|
|
|
|
|
|
// 保存并新建创意
|
|
// 保存并新建创意
|
|
@@ -1084,7 +1264,7 @@ export default {
|
|
this.form.validateFields((err, values) => {
|
|
this.form.validateFields((err, values) => {
|
|
if (!err) {
|
|
if (!err) {
|
|
|
|
|
|
-
|
|
|
|
|
|
+ this.goNextloading=true;
|
|
if(this.district!='NONE'){
|
|
if(this.district!='NONE'){
|
|
values.district=this.district
|
|
values.district=this.district
|
|
}
|
|
}
|
|
@@ -1104,6 +1284,13 @@ export default {
|
|
}else{
|
|
}else{
|
|
values.scheduleTime=''
|
|
values.scheduleTime=''
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ values.siteId=this.siteList.map(item=>{
|
|
|
|
+ return {
|
|
|
|
+ appId:item.appId,
|
|
|
|
+ siteId:item.siteId
|
|
|
|
+ }
|
|
|
|
+ })
|
|
// 投放时间的值
|
|
// 投放时间的值
|
|
if(this.getFormData('scheduleType')=='SCHEDULE_FROM_NOW'){
|
|
if(this.getFormData('scheduleType')=='SCHEDULE_FROM_NOW'){
|
|
values.beginTime=this.dateRange[0].format('YYYY-MM-DD');
|
|
values.beginTime=this.dateRange[0].format('YYYY-MM-DD');
|
|
@@ -1117,11 +1304,33 @@ export default {
|
|
values.agesRange=this.agesRange
|
|
values.agesRange=this.agesRange
|
|
values.region=this.region
|
|
values.region=this.region
|
|
values.convertId=this.convertId
|
|
values.convertId=this.convertId
|
|
- values.excludePopulation=this.excludeSelectedKeys
|
|
|
|
- values.population=this.incluedSelectedKeys
|
|
|
|
|
|
+ values.excludePopulation=this.excludeSelectedKeys.map(item=>{
|
|
|
|
+ return item.id
|
|
|
|
+ })
|
|
|
|
+ values.population=this.incluedSelectedKeys.map(item=>{
|
|
|
|
+ return item.id
|
|
|
|
+ })
|
|
|
|
+ values.strategyState='1'
|
|
console.log('Received values of form: ', values)
|
|
console.log('Received values of form: ', values)
|
|
- let params=[];
|
|
|
|
-
|
|
|
|
|
|
+ let params={
|
|
|
|
+ ...values,
|
|
|
|
+ ...this.strategyInfo
|
|
|
|
+ }
|
|
|
|
+ if(this.useDirectional==0){
|
|
|
|
+ values.templateId=this.directionalCheckedList
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.$parent.currentTabComponent='previewStrategy'
|
|
|
|
+ // postAction('/kuaishouStrategy/add',params).then(res=>{
|
|
|
|
+ // console.log(res)
|
|
|
|
+ // this.goNextloading=false
|
|
|
|
+ // if(res.success){
|
|
|
|
+ // // this.$router.replace('/autoLaunch/autoLaunchList')
|
|
|
|
+ // // this.$bus.$emit('remove', '/autoLaunch/newStrategy')
|
|
|
|
+ // // this.$parent.strategyInfo={}
|
|
|
|
+
|
|
|
|
+ // }
|
|
|
|
+ // })
|
|
|
|
|
|
|
|
|
|
}else{
|
|
}else{
|
|
@@ -1139,24 +1348,26 @@ export default {
|
|
params.accountId = localStorage.getItem('accountId')
|
|
params.accountId = localStorage.getItem('accountId')
|
|
getAction('/kuaishou/batch/getAppList', params).then(res => {
|
|
getAction('/kuaishou/batch/getAppList', params).then(res => {
|
|
if (res.success) {
|
|
if (res.success) {
|
|
- this.appList = res.result.map((item, index) => {
|
|
|
|
- return {
|
|
|
|
- ...item,
|
|
|
|
- key: index
|
|
|
|
- }
|
|
|
|
|
|
+ this.appListAll = res.result.map((item, index) => {
|
|
|
|
+ return {
|
|
|
|
+ ...item,
|
|
|
|
+ key: index
|
|
|
|
+ }
|
|
})
|
|
})
|
|
|
|
+ // if(this.sysType==1){
|
|
|
|
+ // this.appList=this.appListAll.filter(item=>{
|
|
|
|
+ // return item.platform==1||item.platform==2
|
|
|
|
+ // })
|
|
|
|
+ // }else if(this.sysType==2){
|
|
|
|
+ // this.appList=this.appListAll.filter(item=>{
|
|
|
|
+ // return item.platform==3||item.platform==4
|
|
|
|
+ // })
|
|
|
|
+ // }
|
|
}
|
|
}
|
|
})
|
|
})
|
|
},
|
|
},
|
|
|
|
|
|
- getPlatForm(appId) {
|
|
|
|
- if (appId) {
|
|
|
|
- var data = this.appList.filter(item => {
|
|
|
|
- return item.appId == appId
|
|
|
|
- })
|
|
|
|
- return data[0].platform
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
|
|
+
|
|
|
|
|
|
convertChange() {
|
|
convertChange() {
|
|
this.convertId = ""
|
|
this.convertId = ""
|
|
@@ -1177,11 +1388,32 @@ export default {
|
|
}
|
|
}
|
|
})
|
|
})
|
|
},
|
|
},
|
|
|
|
+ sysTypeChange(e){
|
|
|
|
+ console.log(e.target.value);
|
|
|
|
+ // if(this.sysType==1){
|
|
|
|
+ // this.appList=this.appListAll.filter(item=>{
|
|
|
|
+ // return (item.platform==1 || item.platform==2)
|
|
|
|
+ // })
|
|
|
|
+ // }else if(this.sysType==2){
|
|
|
|
+ // this.appList=this.appListAll.filter(item=>{
|
|
|
|
+ // return (item.platform==3||item.platform==4)
|
|
|
|
+ // })
|
|
|
|
+ // }
|
|
|
|
+ },
|
|
|
|
+ getPlatForm(appId) {
|
|
|
|
+ if (appId) {
|
|
|
|
+ var data = this.appList.filter(item => {
|
|
|
|
+ return item.appId == appId
|
|
|
|
+ })
|
|
|
|
+ return data[0].platform
|
|
|
|
+ }
|
|
|
|
+ },
|
|
showConvert() {
|
|
showConvert() {
|
|
this.convertChange()
|
|
this.convertChange()
|
|
if (this.strategyInfo.marketingGoal == 2) {
|
|
if (this.strategyInfo.marketingGoal == 2) {
|
|
if (this.getData('appIds')) {
|
|
if (this.getData('appIds')) {
|
|
- this.convert = true
|
|
|
|
|
|
+ this.convert = true;
|
|
|
|
+
|
|
if (this.getPlatForm(this.getData('appId')) == 1 || this.getPlatForm(this.getData('appId')) == 2) {
|
|
if (this.getPlatForm(this.getData('appId')) == 1 || this.getPlatForm(this.getData('appId')) == 2) {
|
|
this.convertType = '3'
|
|
this.convertType = '3'
|
|
} else {
|
|
} else {
|
|
@@ -1197,6 +1429,25 @@ export default {
|
|
}
|
|
}
|
|
this.getConvertList()
|
|
this.getConvertList()
|
|
},
|
|
},
|
|
|
|
+
|
|
|
|
+ getPageList(appId) {
|
|
|
|
+ if(appId.length){
|
|
|
|
+ appId.forEach((item,index)=>{
|
|
|
|
+ getAction('/kuaishou/batch/getPageList', {
|
|
|
|
+ accountId: this.accountInfo.value,
|
|
|
|
+ appId: item,
|
|
|
|
+ viewComp: 7,
|
|
|
|
+ }).then((res) => {
|
|
|
|
+ if (res.success) {
|
|
|
|
+ this.siteList[index].siteList = res.result
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+
|
|
},
|
|
},
|
|
|
|
|
|
mounted() {
|
|
mounted() {
|
|
@@ -1299,9 +1550,29 @@ export default {
|
|
.ant-btn-danger {
|
|
.ant-btn-danger {
|
|
background-color: #ff4d4f !important;
|
|
background-color: #ff4d4f !important;
|
|
}
|
|
}
|
|
|
|
+ .ant-checkbox-group{
|
|
|
|
+ width: 100%;
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
|
|
+// 标题选择
|
|
|
|
+ // .title-list {
|
|
|
|
+ // width: calc(100% + 48px);
|
|
|
|
+ // margin: 16px -24px;
|
|
|
|
+ // margin-bottom: 0;
|
|
|
|
+ // padding: 10px 30px;
|
|
|
|
+ // background: #f9f9f9;
|
|
|
|
+ // height: 363px;
|
|
|
|
+ // border: 1px solid #eaeaea;
|
|
|
|
+ // overflow: scroll;
|
|
|
|
+ // overflow-x: hidden;
|
|
|
|
+ // margin-top: 10px;
|
|
|
|
+ // }
|
|
|
|
+ // .title-list .title-item{
|
|
|
|
+ // height: 32px;
|
|
|
|
+ // line-height: 32px;
|
|
|
|
+ // }
|
|
.ant-tooltip-inner,
|
|
.ant-tooltip-inner,
|
|
.ant-tooltip,
|
|
.ant-tooltip,
|
|
.ant-tooltip-arrow::before {
|
|
.ant-tooltip-arrow::before {
|
|
@@ -1410,6 +1681,45 @@ export default {
|
|
padding: 32px 24px 48px 32px;
|
|
padding: 32px 24px 48px 32px;
|
|
border-radius: 4px;
|
|
border-radius: 4px;
|
|
box-shadow: 0px 1px 6px 0px rgba(0, 0, 0, 0.05);
|
|
box-shadow: 0px 1px 6px 0px rgba(0, 0, 0, 0.05);
|
|
|
|
+ .ad-range2{
|
|
|
|
+ width: 680px;
|
|
|
|
+ padding: 5px 32px;
|
|
|
|
+ .ad-range2-title{
|
|
|
|
+ background: #f9f9f9;
|
|
|
|
+ // line-height: 32px;
|
|
|
|
+ // height: 32px;
|
|
|
|
+ padding: 15px 15px;
|
|
|
|
+ border: 1px solid #eaeaea;
|
|
|
|
+ border-bottom: 0;
|
|
|
|
+ }
|
|
|
|
+ .quanxuanDirectional{
|
|
|
|
+ // padding: 0 8px;
|
|
|
|
+ position: absolute;
|
|
|
|
+ right: 10px;
|
|
|
|
+ top: 15px;
|
|
|
|
+ color: #1890ff;
|
|
|
|
+ }
|
|
|
|
+ .title-list {
|
|
|
|
+ // width: calc(100% + 48px);
|
|
|
|
+ width: 100%;
|
|
|
|
+ margin: 0;
|
|
|
|
+ margin-bottom: 0;
|
|
|
|
+ padding: 0;
|
|
|
|
+ background: #fff;
|
|
|
|
+ height: 363px;
|
|
|
|
+ border: 1px solid #eaeaea;
|
|
|
|
+ overflow: scroll;
|
|
|
|
+ overflow-x: hidden;
|
|
|
|
+ // margin-top: 10px;
|
|
|
|
+ }
|
|
|
|
+ .title-list .title-item{
|
|
|
|
+ padding: 10px 30px;
|
|
|
|
+ width: 100%;
|
|
|
|
+ // height: 32px;
|
|
|
|
+ // line-height: 32px;
|
|
|
|
+ // border-bottom: 1px solid #eaeaea;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
.moduler-title {
|
|
.moduler-title {
|
|
display: flex;
|
|
display: flex;
|
|
align-items: center;
|
|
align-items: center;
|