|
@@ -46,7 +46,8 @@
|
|
|
<creat-application ref="application" />
|
|
|
</a-form-item>
|
|
|
<a-form-item label=" " class="else-label" :labelCol="{ lg: { span: 7 }, sm: { span: 7 } }"
|
|
|
- :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }" v-if="campaignType == '2'&&showSite&&(getPlatForm(getData('appId'))=='1'||getPlatForm(getData('appId'))=='2')">
|
|
|
+ :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }"
|
|
|
+ v-if="campaignType == '2'&&showSite&&(getPlatForm(getData('appId'))=='1'||getPlatForm(getData('appId'))=='2')">
|
|
|
<a-select v-model="siteId" showSearch allowClear placeholder="选择应用下载详情页" optionFilterProp="children"
|
|
|
:filterOption="filterOption">
|
|
|
<a-select-option v-for="appModel in siteList" :key="appModel.siteId" :value="appModel.siteId">
|
|
@@ -77,6 +78,18 @@
|
|
|
优先从系统应用商店下载
|
|
|
</a-checkbox>
|
|
|
</a-form-item>
|
|
|
+ <a-form-item label=" " :labelCol="{ lg: { span: 7}, sm: { span: 7 } }"
|
|
|
+ :wrapperCol="{ lg: { span: 10 }, sm: { span: 16 } }" class="else-label" v-if="allForm.useAppMarket">
|
|
|
+ 请勾选投放应用已上架的应用商店(默认全选)
|
|
|
+ <a-checkbox-group v-model="allForm.appStore">
|
|
|
+ <a-checkbox value="huawei">华为</a-checkbox>
|
|
|
+ <a-checkbox value="oppo">OPPO</a-checkbox>
|
|
|
+ <a-checkbox value="vivo">VIVO</a-checkbox>
|
|
|
+ <a-checkbox value="xiaomi">小米</a-checkbox>
|
|
|
+ <a-checkbox value="meizu">魅族</a-checkbox>
|
|
|
+ <a-checkbox value="smartisan">锤子</a-checkbox>
|
|
|
+ </a-checkbox-group>
|
|
|
+ </a-form-item>
|
|
|
<div style="text-align:center;font-size:16px;margin-bottom:10px">
|
|
|
目标人群
|
|
|
</div>
|
|
@@ -113,23 +126,20 @@
|
|
|
</a-radio-group>
|
|
|
</a-form-item>
|
|
|
<a-form-item label=" " :labelCol="{ lg: { span: 7 }, sm: { span: 7 } }"
|
|
|
- :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }" class="else-label" v-if="allForm.dayBudget == '1'">
|
|
|
+ :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }" class="else-label" v-show="allForm.dayBudget == '1'">
|
|
|
<a-input placeholder="不小于100,不超过100000000,仅支持输入自然数" v-decorator="[
|
|
|
'dayBudget',
|
|
|
- {
|
|
|
- rules: [{ required: true, message: '请填写预算' }, { validator: budgetValue }]
|
|
|
- }
|
|
|
]" />
|
|
|
</a-form-item>
|
|
|
<a-form-item label="投放方式" :labelCol="{ lg: { span: 7 }, sm: { span: 7 } }"
|
|
|
:wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }">
|
|
|
- <a-radio-group buttonStyle="solid" v-decorator="['speed', { initialValue: 1 }]">
|
|
|
+ <a-radio-group buttonStyle="solid" v-decorator="['speed']">
|
|
|
<a-radio-button :value="1">正常投放</a-radio-button>
|
|
|
<a-radio-button :value="2">平滑投放</a-radio-button>
|
|
|
</a-radio-group>
|
|
|
<br />
|
|
|
<span>
|
|
|
- {{ getData('speed') == '2' ? '平滑匀速投放' : '尽快展示广告消耗预算' }}
|
|
|
+ {{ getData('speed') == 2 ? '平滑匀速投放' : '尽快展示广告消耗预算' }}
|
|
|
</span>
|
|
|
</a-form-item>
|
|
|
<a-form-item label="排期" :labelCol="{ lg: { span: 7 }, sm: { span: 7 } }"
|
|
@@ -173,7 +183,7 @@
|
|
|
<a-form-item label="场景广告位" :labelCol="{ lg: { span: 7 }, sm: { span: 7 } }"
|
|
|
:wrapperCol="{ lg: { span: 17 }, sm: { span: 17 } }">
|
|
|
<!-- v-decorator="['speed', { initialValue: '1' }]" -->
|
|
|
- <a-radio-group buttonStyle="solid" :disabled="typeCopy=='edit'" v-decorator="['sceneId', { initialValue: 1 }]">
|
|
|
+ <a-radio-group buttonStyle="solid" :disabled="typeCopy=='edit'" v-model="allForm.sceneIdAll">
|
|
|
<a-radio-button :value="1">优选广告位</a-radio-button>
|
|
|
<a-radio-button :value="2">按场景选择广告位</a-radio-button>
|
|
|
</a-radio-group>
|
|
@@ -182,7 +192,7 @@
|
|
|
|
|
|
</a-form-item>
|
|
|
<a-form-item label=" " :labelCol="{ lg: { span: 7 }, sm: { span: 7 } }"
|
|
|
- :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }" class="else-label" v-if="getData('sceneId') == 2">
|
|
|
+ :wrapperCol="{ lg: { span: 10 }, sm: { span: 17 } }" class="else-label" v-if="allForm.sceneIdAll == 2">
|
|
|
<a-checkbox-group :disabled="typeCopy=='edit'" :defaultValue="[7]" v-model="allForm.sceneId">
|
|
|
<a-checkbox :value="7">信息流广告</a-checkbox>
|
|
|
<a-checkbox :value="6">上下滑大屏广告</a-checkbox>
|
|
@@ -249,8 +259,8 @@
|
|
|
? '不得低于1元,不得高于项目最高出价' + maxBid + '元'
|
|
|
: '不得低于1元,不得高于项目最高出价' + maxBid + '元'
|
|
|
}}</span>
|
|
|
- <span style="color:red;font-weight:700" v-else-if="item.bidType==2&&item.cpaBid&&item.cpaBid>1">
|
|
|
- 行为出价大于1元,请注意!!!
|
|
|
+ <span style="color:red;font-weight:700" v-else-if="item.bidType==2&&item.cpaBid&&item.cpaBid>1">
|
|
|
+ 行为出价大于1元,请注意!!!
|
|
|
</span>
|
|
|
</a-form-item>
|
|
|
<a-form-item label="深度转化出价" :labelCol="{ lg: { span: 6 }, sm: { span: 7 } }"
|
|
@@ -282,6 +292,17 @@
|
|
|
确定
|
|
|
</a-button>
|
|
|
</template>
|
|
|
+ <a-modal v-model="visibleFail" title="错误信息" :footer="null">
|
|
|
+ <div v-if="visibleData">
|
|
|
+ 失败条数:{{ visibleData.failCount }}
|
|
|
+ <div style="margin-top:20px">
|
|
|
+ <p v-for="(item, index) of visibleData.failInfo" :key="index">
|
|
|
+ <span>名称:{{ item.campaignName?item.campaignName:item.unitName }}</span><br />
|
|
|
+ <span>错误信息:{{ item.failMessage }}</span>
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </a-modal>
|
|
|
</a-modal>
|
|
|
</template>
|
|
|
|
|
@@ -314,6 +335,8 @@
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
+ visibleFail: false,
|
|
|
+ visibleData: null,
|
|
|
checkedTrue: false,
|
|
|
nameValue: '',
|
|
|
visible: false,
|
|
@@ -347,6 +370,7 @@
|
|
|
campaignType: '2',
|
|
|
maxBid: 0,
|
|
|
allForm: {
|
|
|
+ sceneIdAll: 1,
|
|
|
dayBudget: '0',
|
|
|
time: '1',
|
|
|
scheduleTime: '1',
|
|
@@ -356,7 +380,10 @@
|
|
|
fail: [],
|
|
|
success: [],
|
|
|
sceneId: [7],
|
|
|
- useAppMarket: false
|
|
|
+ useAppMarket: false,
|
|
|
+ appStore: ['huawei', 'oppo', 'vivo', 'xiaomi',
|
|
|
+ 'meizu', 'smartisan'
|
|
|
+ ]
|
|
|
},
|
|
|
typeCopy: "edit",
|
|
|
dataList: [],
|
|
@@ -429,7 +456,7 @@
|
|
|
} else {
|
|
|
this.allForm.group[index].showTipCheck = false
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
},
|
|
|
getScheduleTime(item) {
|
|
|
this.allForm.scheduleTimeData = item
|
|
@@ -572,13 +599,18 @@
|
|
|
...res.result.target
|
|
|
}
|
|
|
// dataJson.useAppMarket = dataJson.useAppMarket==0?false:true
|
|
|
- dataJson.dayBudget = dataJson.dayBudget / 1000
|
|
|
- dataJson.sceneId = JSON.parse(dataJson.sceneId)[0] == 1 ? 1 : 2
|
|
|
+
|
|
|
+ this.allForm.sceneIdAll = JSON.parse(dataJson.sceneId).filter(item => item == 1).length > 0 ? 1 : 2
|
|
|
this.allForm.useAppMarket = dataJson.useAppMarket ? (dataJson.useAppMarket == 0 ? false : true) : false
|
|
|
- this.allForm.sceneId = dataJson.sceneId == 1 ? [7] : JSON.parse(res.result.baseInfo
|
|
|
+ this.allForm.appStore = this.allForm.useAppMarket ? JSON.parse(dataJson.appStore) : ['huawei', 'oppo',
|
|
|
+ 'vivo', 'xiaomi',
|
|
|
+ 'meizu', 'smartisan'
|
|
|
+ ]
|
|
|
+ this.allForm.sceneId = this.allForm.sceneIdAll == 1 ? [7] : JSON.parse(res.result.baseInfo
|
|
|
.sceneId)
|
|
|
console.log(this.allForm.sceneId, 1111111)
|
|
|
this.allForm.dayBudget = dataJson.dayBudget == 0 ? '0' : '1'
|
|
|
+ dataJson.dayBudget = dataJson.dayBudget / 1000
|
|
|
this.allForm.time = dataJson.endTime ? '2' : '1'
|
|
|
this.timeRange = [moment(dataJson.beginTime), moment(dataJson.endTime)]
|
|
|
this.allForm.scheduleTime = dataJson.scheduleTime.indexOf('1') != -1 ? '2' : '1'
|
|
@@ -640,11 +672,29 @@
|
|
|
this.populationData.allForm.noAgeBreak = dataJson.noAgeBreak + ''
|
|
|
this.populationData.allForm.noGenderBreak = dataJson.noGenderBreak + ''
|
|
|
this.populationData.allForm.noAreaBreak = dataJson.noAreaBreak + ''
|
|
|
-
|
|
|
+ this.populationData.allForm.checkArr = this.populationData.allForm.appType == '2' ? JSON.parse(dataJson
|
|
|
+ .appIds) : []
|
|
|
this.$nextTick(() => {
|
|
|
+ console.log(dataJson)
|
|
|
this.form.setFieldsValue(pick(dataJson, ['appId', 'urlType', 'url', 'dayBudget', 'speed',
|
|
|
- 'showMode', 'sceneId'
|
|
|
+ 'showMode'
|
|
|
]))
|
|
|
+ // this.form.setFieldsValue({
|
|
|
+ // appId: dataJson.appId
|
|
|
+ // })
|
|
|
+ // this.form.setFieldsValue({
|
|
|
+ // dayBudget: dataJson.dayBudget
|
|
|
+ // })
|
|
|
+ // this.form.setFieldsValue({
|
|
|
+ // speed: dataJson.speed
|
|
|
+ // })
|
|
|
+ // this.form.setFieldsValue({
|
|
|
+ // showMode: dataJson.showMode
|
|
|
+ // })
|
|
|
+ // console.log(dataJson.sceneId)
|
|
|
+ // this.form.setFieldsValue({
|
|
|
+ // sceneId: dataJson.sceneId
|
|
|
+ // })
|
|
|
})
|
|
|
}
|
|
|
})
|
|
@@ -672,7 +722,7 @@
|
|
|
})[0]
|
|
|
var json = {
|
|
|
...values,
|
|
|
- sceneId: values.sceneId == 1 ? [values.sceneId] : this.allForm.sceneId,
|
|
|
+ sceneId: this.allForm.sceneIdAll == 1 ? [this.allForm.sceneIdAll] : this.allForm.sceneId,
|
|
|
dayBudget: values.dayBudget * 1000
|
|
|
}
|
|
|
var params = {
|
|
@@ -689,8 +739,12 @@
|
|
|
}
|
|
|
if (this.allForm.useAppMarket == true || this.allForm.useAppMarket == false) {
|
|
|
params.useAppMarket = this.allForm.useAppMarket ? 1 : 0
|
|
|
+ if (this.allForm.useAppMarket == true) {
|
|
|
+ params.appStore = this.allForm.appStore
|
|
|
+ }
|
|
|
}
|
|
|
- if (this.showSite&&(this.getPlatForm(this.getData('appId'))=='1'||this.getPlatForm(this.getData('appId'))=='2')) {
|
|
|
+ if (this.showSite && (this.getPlatForm(this.getData('appId')) == '1' || this.getPlatForm(this.getData(
|
|
|
+ 'appId')) == '2')) {
|
|
|
params.appJson = {
|
|
|
isUpdate: true,
|
|
|
siteId: this.siteId
|
|
@@ -728,12 +782,19 @@
|
|
|
params.groupArr = [groupArr]
|
|
|
postAction('/kuaishou/batch/copyUnit', params).then(res => {
|
|
|
if (res.success) {
|
|
|
- var that = this
|
|
|
- setTimeout(() => {
|
|
|
- that.visible = false
|
|
|
- that.loading = false
|
|
|
- that.$emit('getList', localStorage.getItem('advertisingGroupKey'))
|
|
|
- }, 1000)
|
|
|
+ if (res.result.failCount > 0) {
|
|
|
+ this.visibleFail = true
|
|
|
+ this.visibleData = res.result
|
|
|
+ this.loading = false
|
|
|
+ } else {
|
|
|
+ var that = this
|
|
|
+ setTimeout(() => {
|
|
|
+ that.visible = false
|
|
|
+ that.loading = false
|
|
|
+ that.$emit('getList', localStorage.getItem('advertisingGroupKey'))
|
|
|
+ }, 1000)
|
|
|
+ }
|
|
|
+
|
|
|
} else {
|
|
|
this.$message.error(res.message)
|
|
|
}
|
|
@@ -842,9 +903,6 @@
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
- getData(className) {
|
|
|
- return this.form.getFieldValue(className)
|
|
|
- }
|
|
|
},
|
|
|
mounted: function () {
|
|
|
this.getAppList()
|