|
@@ -128,7 +128,7 @@
|
|
<span>输入的数量为每天所创建的广告组数量</span>
|
|
<span>输入的数量为每天所创建的广告组数量</span>
|
|
<span>以及每个广告组创建的广告计划数量</span>
|
|
<span>以及每个广告组创建的广告计划数量</span>
|
|
</template>
|
|
</template>
|
|
- <a-icon class="form-itrm-icon" type="smile-o"/>
|
|
|
|
|
|
+ <a-icon class="form-itrm-icon" type="question-circle"/>
|
|
</a-tooltip>
|
|
</a-tooltip>
|
|
<div v-if="campaignStatus" style="width: 500px;color: #f00;">单账号每天创建计划上限500个</div>
|
|
<div v-if="campaignStatus" style="width: 500px;color: #f00;">单账号每天创建计划上限500个</div>
|
|
</a-form-model-item>
|
|
</a-form-model-item>
|
|
@@ -192,6 +192,15 @@
|
|
allow-clear
|
|
allow-clear
|
|
/>
|
|
/>
|
|
</a-form-model-item>
|
|
</a-form-model-item>
|
|
|
|
+ <a-form-model-item v-if="configForm.adDownloadType === 'DOWNLOAD_URL'" label="优先应用商店下载">
|
|
|
|
+ <a-radio-group
|
|
|
|
+ v-model="configForm.adDownloadMode"
|
|
|
|
+ button-style="solid"
|
|
|
|
+ >
|
|
|
|
+ <a-radio-button value="DEFAULT">不启用</a-radio-button>
|
|
|
|
+ <a-radio-button value="APP_STORE_DELIVERY">启用</a-radio-button>
|
|
|
|
+ </a-radio-group>
|
|
|
|
+ </a-form-model-item>
|
|
</div>
|
|
</div>
|
|
<div class="separate-module-con">
|
|
<div class="separate-module-con">
|
|
<p class="rock-title">优化目标</p>
|
|
<p class="rock-title">优化目标</p>
|
|
@@ -268,8 +277,8 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="separate-module-con">
|
|
<div class="separate-module-con">
|
|
- <a-tabs v-model="selectPackageTabs" @change="handleSelectPackageTabs">
|
|
|
|
- <a-tab-pane key="1" tab="新建定向">
|
|
|
|
|
|
+ <a-tabs v-model="configForm.adDirectionalFlag" @change="handleSelectPackageTabs">
|
|
|
|
+ <a-tab-pane key="add" tab="新建定向">
|
|
<p class="rock-title">用户定向</p>
|
|
<p class="rock-title">用户定向</p>
|
|
<a-form-model-item label="地域">
|
|
<a-form-model-item label="地域">
|
|
<a-radio-group v-model="configForm.adDistrict" button-style="solid">
|
|
<a-radio-group v-model="configForm.adDistrict" button-style="solid">
|
|
@@ -305,6 +314,24 @@
|
|
<a-form-model-item label="年龄">
|
|
<a-form-model-item label="年龄">
|
|
<radio-check v-model="configForm.adSelectAge" :options="ageArr" @change="getAgeSelect"></radio-check>
|
|
<radio-check v-model="configForm.adSelectAge" :options="ageArr" @change="getAgeSelect"></radio-check>
|
|
</a-form-model-item>
|
|
</a-form-model-item>
|
|
|
|
+ <a-form-model-item label="行为兴趣">
|
|
|
|
+ <a-radio-group
|
|
|
|
+ v-model="configForm.adInterestActionMode"
|
|
|
|
+ button-style="solid"
|
|
|
|
+ >
|
|
|
|
+ <a-radio-button value="UNLIMITED">不限</a-radio-button>
|
|
|
|
+ <a-radio-button value="RECOMMEND">
|
|
|
|
+ 系统推荐
|
|
|
|
+ <a-tooltip placement="top">
|
|
|
|
+ <template slot="title">
|
|
|
|
+ <span>若与自定义人群包同时使用,选择定向人群时系统推荐定向不生效</span>
|
|
|
|
+ </template>
|
|
|
|
+ <a-icon type="question-circle" />
|
|
|
|
+ </a-tooltip>
|
|
|
|
+ </a-radio-button>
|
|
|
|
+ <a-radio-button value="CUSTOM" disabled>自定义</a-radio-button>
|
|
|
|
+ </a-radio-group>
|
|
|
|
+ </a-form-model-item>
|
|
<a-form-model-item label="自定义人群">
|
|
<a-form-model-item label="自定义人群">
|
|
<a-radio-group v-model="configForm.customPerson" button-style="solid" @change="handleCustomPerson">
|
|
<a-radio-group v-model="configForm.customPerson" button-style="solid" @change="handleCustomPerson">
|
|
<a-radio-button value="NONE">不限</a-radio-button>
|
|
<a-radio-button value="NONE">不限</a-radio-button>
|
|
@@ -328,6 +355,7 @@
|
|
:valueids="configForm.adRetargetingTagsType"
|
|
:valueids="configForm.adRetargetingTagsType"
|
|
:updatelistinclude="configForm.updateGetingInclude" @selection-alone-event="handleSelectionAloneEvent"
|
|
:updatelistinclude="configForm.updateGetingInclude" @selection-alone-event="handleSelectionAloneEvent"
|
|
@clearlist="handleClearlist"
|
|
@clearlist="handleClearlist"
|
|
|
|
+ @clear-table-alone="handleClearTableAlone"
|
|
>
|
|
>
|
|
</directional-logic>
|
|
</directional-logic>
|
|
</div>
|
|
</div>
|
|
@@ -342,6 +370,7 @@
|
|
:valueids="configForm.adRetargetingTagsType"
|
|
:valueids="configForm.adRetargetingTagsType"
|
|
:updatelistexclude="configForm.updateGetingExclude" @selection-alone-event="handleSelectionAloneEvent"
|
|
:updatelistexclude="configForm.updateGetingExclude" @selection-alone-event="handleSelectionAloneEvent"
|
|
@clearlist="handleClearlist"
|
|
@clearlist="handleClearlist"
|
|
|
|
+ @clear-table-alone="handleClearTableLogic"
|
|
>
|
|
>
|
|
</directional-logic>
|
|
</directional-logic>
|
|
</div>
|
|
</div>
|
|
@@ -358,6 +387,8 @@
|
|
:updatelistexclude="configForm.updateGetingExclude" @selection-direct-event="handleDirectEvent"
|
|
:updatelistexclude="configForm.updateGetingExclude" @selection-direct-event="handleDirectEvent"
|
|
@selection-exclude-event="handleExcludeEvent"
|
|
@selection-exclude-event="handleExcludeEvent"
|
|
@clearlist="handleClearlist"
|
|
@clearlist="handleClearlist"
|
|
|
|
+ @clear-table-direct="handleClearTableAlone"
|
|
|
|
+ @clear-table-exclude="handleClearTableLogic"
|
|
>
|
|
>
|
|
</directional-logic>
|
|
</directional-logic>
|
|
</div>
|
|
</div>
|
|
@@ -370,6 +401,12 @@
|
|
</a-radio-group>
|
|
</a-radio-group>
|
|
</a-form-model-item>
|
|
</a-form-model-item>
|
|
<a-form-model-item label="平台">
|
|
<a-form-model-item label="平台">
|
|
|
|
+ <!-- <check-more-plat
|
|
|
|
+ v-model="configForm.updateAdPlatform"
|
|
|
|
+ :options="adPlatformOption"
|
|
|
|
+ @change="handlePlateSelect"
|
|
|
|
+ >
|
|
|
|
+ </check-more-plat> -->
|
|
<a-radio-group v-model="configForm.adPlatform" button-style="solid">
|
|
<a-radio-group v-model="configForm.adPlatform" button-style="solid">
|
|
<a-radio-button value="NONE" :disabled="platformLoadingType === 'APP_IOS' || platformLoadingType === 'APP_ANDROID'">不限</a-radio-button>
|
|
<a-radio-button value="NONE" :disabled="platformLoadingType === 'APP_IOS' || platformLoadingType === 'APP_ANDROID'">不限</a-radio-button>
|
|
<a-radio-button value="IOS" :disabled="platformLoadingType === 'APP_ANDROID'">IOS</a-radio-button>
|
|
<a-radio-button value="IOS" :disabled="platformLoadingType === 'APP_ANDROID'">IOS</a-radio-button>
|
|
@@ -378,7 +415,12 @@
|
|
</a-radio-group>
|
|
</a-radio-group>
|
|
</a-form-model-item>
|
|
</a-form-model-item>
|
|
<a-form-model-item label="设备类型">
|
|
<a-form-model-item label="设备类型">
|
|
- <radio-check v-model="configForm.adDeviceSelectType" :options="deviceTypeList" @change="getAgeSelect"></radio-check>
|
|
|
|
|
|
+ <radio-check
|
|
|
|
+ v-model="configForm.adDeviceSelectType"
|
|
|
|
+ :options="deviceTypeList"
|
|
|
|
+ @change="getAgeSelect"
|
|
|
|
+ >
|
|
|
|
+ </radio-check>
|
|
</a-form-model-item>
|
|
</a-form-model-item>
|
|
<a-form-model-item v-if="configForm.adDownloadUrl" label="安卓版本">
|
|
<a-form-model-item v-if="configForm.adDownloadUrl" label="安卓版本">
|
|
<a-radio-group v-model="configForm.adAndroidVersion" button-style="solid" @change="handleAndroidVersion">
|
|
<a-radio-group v-model="configForm.adAndroidVersion" button-style="solid" @change="handleAndroidVersion">
|
|
@@ -411,7 +453,7 @@
|
|
</a-radio-group>
|
|
</a-radio-group>
|
|
</a-form-model-item>
|
|
</a-form-model-item>
|
|
<a-form-model-item v-if="configForm.adConvertType" label="过滤已转化用户">
|
|
<a-form-model-item v-if="configForm.adConvertType" label="过滤已转化用户">
|
|
- <a-radio-group v-model="configForm.adHideIfConverted" button-style="solid">
|
|
|
|
|
|
+ <a-radio-group v-model="configForm.adHideIfConverted" button-style="solid" @change="handleAdhideConver">
|
|
<a-radio-button
|
|
<a-radio-button
|
|
v-for="item in adHideIfConvertedDataOption"
|
|
v-for="item in adHideIfConvertedDataOption"
|
|
:key="item.id"
|
|
:key="item.id"
|
|
@@ -421,15 +463,43 @@
|
|
</a-radio-button>
|
|
</a-radio-button>
|
|
</a-radio-group>
|
|
</a-radio-group>
|
|
</a-form-model-item>
|
|
</a-form-model-item>
|
|
|
|
+ <a-form-model-item v-if="configForm.adHideIfConverted === 'CUSTOMER' || configForm.adHideIfConverted === 'APP'" label="过滤时间">
|
|
|
|
+ <a-radio-group v-model="configForm.adConvertedTimeDuration" button-style="solid">
|
|
|
|
+ <a-radio-button value="ONE_MONTH">1个月</a-radio-button>
|
|
|
|
+ <a-radio-button value="THREE_MONTH">3个月</a-radio-button>
|
|
|
|
+ <a-radio-button value="SIX_MONTH">6个月</a-radio-button>
|
|
|
|
+ <a-radio-button value="TWELVE_MONTH">12个月</a-radio-button>
|
|
|
|
+ </a-radio-group>
|
|
|
|
+ <a-tooltip placement="top">
|
|
|
|
+ <template slot="title">
|
|
|
|
+ <span>对已转化过的用户避免再次投放的时间</span>
|
|
|
|
+ </template>
|
|
|
|
+ <a-icon class="form-itrm-icon" style="left: -90px;" type="question-circle"/>
|
|
|
|
+ </a-tooltip>
|
|
|
|
+ </a-form-model-item>
|
|
<a-form-model-item label="智能放量">
|
|
<a-form-model-item label="智能放量">
|
|
- <a-radio-group v-model="configForm.adAutoExtendEnabled" button-style="solid">
|
|
|
|
|
|
+ <a-radio-group v-model="configForm.adAutoExtendEnabled" button-style="solid" @change="handleAdAutoExtend">
|
|
<a-radio-button value="0">不开启</a-radio-button>
|
|
<a-radio-button value="0">不开启</a-radio-button>
|
|
<a-radio-button value="1">开启</a-radio-button>
|
|
<a-radio-button value="1">开启</a-radio-button>
|
|
</a-radio-group>
|
|
</a-radio-group>
|
|
|
|
+ <a-tooltip placement="top">
|
|
|
|
+ <template slot="title">
|
|
|
|
+ <span>智能放量可以帮您逐步探索已选定向人群之外的目标人群,提升跑量。已选择定向建议放开</span>
|
|
|
|
+ </template>
|
|
|
|
+ <a-icon class="form-itrm-icon" style="left: -90px;" type="question-circle"/>
|
|
|
|
+ </a-tooltip>
|
|
</a-form-model-item>
|
|
</a-form-model-item>
|
|
|
|
+ <div v-if="configForm.adAutoExtendEnabled === '1'" class="adver-position-radio" style="width: 70%;">
|
|
|
|
+ <auto-select
|
|
|
|
+ :defaultlist="adAutoExtendList"
|
|
|
|
+ :editdata="AutoExtendEditSelect"
|
|
|
|
+ @select-finally-result="handleSelectTxtend"
|
|
|
|
+ >
|
|
|
|
+ </auto-select>
|
|
|
|
+ </div>
|
|
</a-tab-pane>
|
|
</a-tab-pane>
|
|
- <a-tab-pane key="2" tab="选择定向包">
|
|
|
|
- <a-form-model-item class="select-orientation-class" label="选择已有定向包" :prop="selectPackageTabs === '2' ? 'adAudiencePackageId' : ''">
|
|
|
|
|
|
+ <a-tab-pane key="choice" tab="选择定向包">
|
|
|
|
+ <a-form-model-item class="select-orientation-class" label="选择已有定向包" :prop="configForm.adDirectionalFlag === 'choice' ? 'adAudiencePackageId' : ''">
|
|
<a-select
|
|
<a-select
|
|
class="common-input-long"
|
|
class="common-input-long"
|
|
v-model="configForm.adAudiencePackageId"
|
|
v-model="configForm.adAudiencePackageId"
|
|
@@ -453,7 +523,7 @@
|
|
<template slot="title">
|
|
<template slot="title">
|
|
<span>已有定向包只展示当前推广目的和投放范围下,定向功能升级后仍可用的定向包</span>
|
|
<span>已有定向包只展示当前推广目的和投放范围下,定向功能升级后仍可用的定向包</span>
|
|
</template>
|
|
</template>
|
|
- <a-icon class="form-itrm-icon orientation-icon" type="smile-o"/>
|
|
|
|
|
|
+ <a-icon class="form-itrm-icon orientation-icon" type="question-circle"/>
|
|
</a-tooltip>
|
|
</a-tooltip>
|
|
</a-form-model-item>
|
|
</a-form-model-item>
|
|
<span v-if="selectOrientPlaceholder !== 'able'" style="color: #f00; margin-left: 198px;">{{ selectOrientPlaceholder }}</span>
|
|
<span v-if="selectOrientPlaceholder !== 'able'" style="color: #f00; margin-left: 198px;">{{ selectOrientPlaceholder }}</span>
|
|
@@ -629,6 +699,7 @@
|
|
<a-input-number
|
|
<a-input-number
|
|
class="common-input"
|
|
class="common-input"
|
|
v-model="configForm.adStepBid"
|
|
v-model="configForm.adStepBid"
|
|
|
|
+ :min="0"
|
|
:step="0.01"
|
|
:step="0.01"
|
|
placeholder="请输入"
|
|
placeholder="请输入"
|
|
@blur="handleFloatingInterval"
|
|
@blur="handleFloatingInterval"
|
|
@@ -748,6 +819,60 @@
|
|
allow-clear
|
|
allow-clear
|
|
/>
|
|
/>
|
|
</a-form-model-item>
|
|
</a-form-model-item>
|
|
|
|
+ <a-form-model-item v-if="configForm.adDownloadType === 'DOWNLOAD_URL'" label="应用名" prop="creativeAppName">
|
|
|
|
+ <a-input
|
|
|
|
+ class="common-input-long"
|
|
|
|
+ placeholder="请输入来源"
|
|
|
|
+ v-model="configForm.creativeAppName"
|
|
|
|
+ allow-clear
|
|
|
|
+ />
|
|
|
|
+ </a-form-model-item>
|
|
|
|
+ <a-form-model-item v-if="configForm.adDownloadType === 'DOWNLOAD_URL' && platformLoadingType === 'APP_ANDROID'" label="副标题">
|
|
|
|
+ <a-input
|
|
|
|
+ class="common-input-long"
|
|
|
|
+ placeholder="请输入来源"
|
|
|
|
+ v-model="configForm.creativeSubTitle"
|
|
|
|
+ allow-clear
|
|
|
|
+ @blur="handleCreativeSubTitleBlur"
|
|
|
|
+ />
|
|
|
|
+ </a-form-model-item>
|
|
|
|
+ <div v-if="subTitleMsgStatus" style="width: 500px;color: #f00;margin-left: 140px">{{ subTitleMsg }}</div>
|
|
|
|
+ <a-form-model-item v-if="configForm.adDownloadType === 'DOWNLOAD_URL'" label="自动生成视频素材">
|
|
|
|
+ <a-radio-group v-model="configForm.creativeIsPresentedVideo" button-style="solid">
|
|
|
|
+ <a-radio-button :value="0">不启用</a-radio-button>
|
|
|
|
+ <a-radio-button :value="1">启用</a-radio-button>
|
|
|
|
+ </a-radio-group>
|
|
|
|
+ </a-form-model-item>
|
|
|
|
+ <a-form-model-item v-if="configForm.adDownloadType === 'DOWNLOAD_URL'" label="最优创意衍生计划">
|
|
|
|
+ <a-radio-group v-model="configForm.creativeGenerateDerivedAd" button-style="solid">
|
|
|
|
+ <a-radio-button :value="0">不启用</a-radio-button>
|
|
|
|
+ <a-radio-button :value="1">启用</a-radio-button>
|
|
|
|
+ </a-radio-group>
|
|
|
|
+ </a-form-model-item>
|
|
|
|
+ <a-form-model-item label="广告评论">
|
|
|
|
+ <a-radio-group v-model="configForm.creativeIsCommentDisable" button-style="solid">
|
|
|
|
+ <a-radio-button :value="1">关闭</a-radio-button>
|
|
|
|
+ <a-radio-button :value="0">开启</a-radio-button>
|
|
|
|
+ </a-radio-group>
|
|
|
|
+ </a-form-model-item>
|
|
|
|
+ <a-form-model-item label="客户端下载视频">
|
|
|
|
+ <a-radio-group v-model="configForm.creativeDownloadStatus" button-style="solid">
|
|
|
|
+ <a-radio-button :value="1">关闭</a-radio-button>
|
|
|
|
+ <a-radio-button :value="0">开启</a-radio-button>
|
|
|
|
+ </a-radio-group>
|
|
|
|
+ </a-form-model-item>
|
|
|
|
+ <a-form-model-item label="创意展现">
|
|
|
|
+ <a-radio-group v-model="configForm.creativeDisplayMode" button-style="solid">
|
|
|
|
+ <a-radio-button value="CREATIVE_DISPLAY_MODE_CTR">优选模式</a-radio-button>
|
|
|
|
+ <a-radio-button value="CREATIVE_DISPLAY_MODE_RANDOM">轮播模式</a-radio-button>
|
|
|
|
+ </a-radio-group>
|
|
|
|
+ </a-form-model-item>
|
|
|
|
+ <div v-if="configForm.creativeDisplayMode === 'CREATIVE_DISPLAY_MODE_CTR'" class="adver-position-radio">
|
|
|
|
+ 选择优选模式,系统会自动对效果好的创意进行展示量倾斜,创意效果越好展示量越高
|
|
|
|
+ </div>
|
|
|
|
+ <div v-if="configForm.creativeDisplayMode === 'CREATIVE_DISPLAY_MODE_RANDOM'" class="adver-position-radio">
|
|
|
|
+ 使用创意轮播,系统将平分各创意展现机会,便于广告主比较各创意投放效果
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
<div class="separate-module-con">
|
|
<div class="separate-module-con">
|
|
<p class="rock-title">创意分类</p>
|
|
<p class="rock-title">创意分类</p>
|
|
@@ -791,7 +916,7 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="separate-module-con btn-Unique-con">
|
|
<div class="separate-module-con btn-Unique-con">
|
|
- <a-button class="sure-btn" type="primary" @click="handleRelaxSure">确定</a-button>
|
|
|
|
|
|
+ <a-button class="sure-btn" type="primary" :loading="sureLoading" @click="handleRelaxSure">确定</a-button>
|
|
<a-button class="cancel-btn" @click="handleRelaxCancel">取消</a-button>
|
|
<a-button class="cancel-btn" @click="handleRelaxCancel">取消</a-button>
|
|
</div>
|
|
</div>
|
|
</a-form-model>
|
|
</a-form-model>
|
|
@@ -804,6 +929,8 @@ import SelectCheckAll from '../../BatchCreate/toutiaoTime';
|
|
import radioCheck from '@/components/formComponents/checkBoxGroup';
|
|
import radioCheck from '@/components/formComponents/checkBoxGroup';
|
|
import linkMultiSelect from '@/views/modules/BatchCreate/linkMultiSelect';
|
|
import linkMultiSelect from '@/views/modules/BatchCreate/linkMultiSelect';
|
|
import DirectionalLogic from './directional-logic/directional-logic';
|
|
import DirectionalLogic from './directional-logic/directional-logic';
|
|
|
|
+import AutoSelect from './tree-select/tree-select';
|
|
|
|
+import CheckMorePlat from './check-more-plat/check-more-plat';
|
|
|
|
|
|
import moment from 'moment';
|
|
import moment from 'moment';
|
|
import BMF from 'browser-md5-file';
|
|
import BMF from 'browser-md5-file';
|
|
@@ -834,7 +961,9 @@ export default {
|
|
SelectCheckAll,
|
|
SelectCheckAll,
|
|
radioCheck,
|
|
radioCheck,
|
|
linkMultiSelect,
|
|
linkMultiSelect,
|
|
- DirectionalLogic
|
|
|
|
|
|
+ DirectionalLogic,
|
|
|
|
+ AutoSelect,
|
|
|
|
+ CheckMorePlat
|
|
},
|
|
},
|
|
data() {
|
|
data() {
|
|
let handleConfirmValue = (rule, value, callback) => {
|
|
let handleConfirmValue = (rule, value, callback) => {
|
|
@@ -881,10 +1010,66 @@ export default {
|
|
callback('最高出价不能低于最低出价');
|
|
callback('最高出价不能低于最低出价');
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
+ let budgetValidator = (rule, value, callback) => {
|
|
|
|
+ if (this.modalTitle === 'edit') {
|
|
|
|
+ if (Number(value) > Number(this.defaultAdBudget) && Number(value) < (Number(this.defaultAdBudget) + 100)) {
|
|
|
|
+ callback('单次修改预算幅度, 不能低于100.0元');
|
|
|
|
+ }
|
|
|
|
+ else if (Number(value) < Number(this.defaultAdBudget) && Number(value) > (Number(this.defaultAdBudget) - 100)) {
|
|
|
|
+ callback('单次修改预算幅度, 不能低于100.0元');
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ callback();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ };
|
|
return {
|
|
return {
|
|
|
|
+ sureLoading: false,
|
|
|
|
+ subTitleMsgStatus: false,
|
|
|
|
+ subTitleMsg: '',
|
|
|
|
+ AutoExtendEditSelect: [],
|
|
|
|
+ adPlatformOption: [
|
|
|
|
+ {
|
|
|
|
+ value: 'NONE',
|
|
|
|
+ label: '不限'
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ value: 'IOS',
|
|
|
|
+ label: 'IOS'
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ value: 'ANDROID',
|
|
|
|
+ label: 'ANDROID'
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ value: 'PC',
|
|
|
|
+ label: 'PC'
|
|
|
|
+ }
|
|
|
|
+ ],
|
|
|
|
+ adAutoExtendList: [
|
|
|
|
+ {
|
|
|
|
+ value: 'AGE',
|
|
|
|
+ label: '年龄'
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ value: 'REGION',
|
|
|
|
+ label: '地域'
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ value: 'GENDER',
|
|
|
|
+ label: '性别'
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ value: 'INTEREST_ACTION',
|
|
|
|
+ label: '行为兴趣'
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ value: 'CUSTOM_AUDIENCE',
|
|
|
|
+ label: '自定人群-定向'
|
|
|
|
+ }
|
|
|
|
+ ],
|
|
directionalData: [],
|
|
directionalData: [],
|
|
platformLoadingType: '',
|
|
platformLoadingType: '',
|
|
- selectPackageTabs: '1',
|
|
|
|
deviceTypeList: [
|
|
deviceTypeList: [
|
|
{
|
|
{
|
|
value: 'NONE',
|
|
value: 'NONE',
|
|
@@ -959,7 +1144,7 @@ export default {
|
|
regionCityListUrl: 'ctop/bytedanceAreaInfo/list',
|
|
regionCityListUrl: 'ctop/bytedanceAreaInfo/list',
|
|
defaultAdBudget: '',
|
|
defaultAdBudget: '',
|
|
adBudgetShowTitle: false,
|
|
adBudgetShowTitle: false,
|
|
- adBudgetNum: 1,
|
|
|
|
|
|
+ adBudgetNum: 300,
|
|
campaignStatus: false,
|
|
campaignStatus: false,
|
|
detailData: {},
|
|
detailData: {},
|
|
modalTitle: '',
|
|
modalTitle: '',
|
|
@@ -1013,6 +1198,10 @@ export default {
|
|
labelCol: {span: 4},
|
|
labelCol: {span: 4},
|
|
wrapperCol: {span: 14},
|
|
wrapperCol: {span: 14},
|
|
rules: {
|
|
rules: {
|
|
|
|
+ creativeAppName: [
|
|
|
|
+ {required: true, message: '请输入', trigger: 'blur'},
|
|
|
|
+ {validator: handleCharacterLen20, trigger: 'blur'}
|
|
|
|
+ ],
|
|
adExternalUrl: [
|
|
adExternalUrl: [
|
|
{required: true, message: '请输入', trigger: 'blur'},
|
|
{required: true, message: '请输入', trigger: 'blur'},
|
|
{validator: handleConfirmValue, trigger: 'blur'}
|
|
{validator: handleConfirmValue, trigger: 'blur'}
|
|
@@ -1037,7 +1226,8 @@ export default {
|
|
{required: true, message: '请输入', trigger: 'blur'}
|
|
{required: true, message: '请输入', trigger: 'blur'}
|
|
],
|
|
],
|
|
accountBudget: [
|
|
accountBudget: [
|
|
- {required: true, message: '请输入', trigger: 'blur'}
|
|
|
|
|
|
+ {required: true, message: '请输入', trigger: 'blur'},
|
|
|
|
+ {validator: budgetValidator, trigger: 'blur'}
|
|
],
|
|
],
|
|
campaignName: [
|
|
campaignName: [
|
|
{required: true, message: '请输入广告组名称', trigger: 'blur'},
|
|
{required: true, message: '请输入广告组名称', trigger: 'blur'},
|
|
@@ -1077,6 +1267,17 @@ export default {
|
|
creativeThirdIndustryIds: [{required: true, message: '请选择', trigger: 'change'}]
|
|
creativeThirdIndustryIds: [{required: true, message: '请选择', trigger: 'change'}]
|
|
},
|
|
},
|
|
configForm: {
|
|
configForm: {
|
|
|
|
+ adDirectionalFlag: 'add',
|
|
|
|
+ adInterestActionMode: 'UNLIMITED',
|
|
|
|
+ creativeDisplayMode: 'CREATIVE_DISPLAY_MODE_CTR',
|
|
|
|
+ creativeAppName: '',
|
|
|
|
+ creativeIsPresentedVideo: 0,
|
|
|
|
+ creativeGenerateDerivedAd: 0,
|
|
|
|
+ creativeIsCommentDisable: 1,
|
|
|
|
+ creativeDownloadStatus: 1,
|
|
|
|
+ creativeSubTitle: '',
|
|
|
|
+ adConvertedTimeDuration: 'THREE_MONTH',
|
|
|
|
+ adDownloadMode: 'DEFAULT',
|
|
dpLinkIndexUsed: 0,
|
|
dpLinkIndexUsed: 0,
|
|
adRetargetingTagsType: '',
|
|
adRetargetingTagsType: '',
|
|
adAudiencePackageId: undefined,
|
|
adAudiencePackageId: undefined,
|
|
@@ -1095,7 +1296,7 @@ export default {
|
|
productSellingPoints: [], // 商品买点
|
|
productSellingPoints: [], // 商品买点
|
|
adBudgetMode: 'BUDGET_MODE_DAY', // 预算类型
|
|
adBudgetMode: 'BUDGET_MODE_DAY', // 预算类型
|
|
adDownloadUrl: '', // 下载链接
|
|
adDownloadUrl: '', // 下载链接
|
|
- accountBudget: 1000, // 账户日预算
|
|
|
|
|
|
+ accountBudget: 0, // 账户日预算
|
|
accountId: undefined, // 账户
|
|
accountId: undefined, // 账户
|
|
dpLinkStartIndex: 1,
|
|
dpLinkStartIndex: 1,
|
|
dpLinkEndIndex: 2,
|
|
dpLinkEndIndex: 2,
|
|
@@ -1123,6 +1324,7 @@ export default {
|
|
customPerson: 'NONE', // 定向-自定义
|
|
customPerson: 'NONE', // 定向-自定义
|
|
adSuperiorPopularityType: 'NONE', // 定向-媒体定向
|
|
adSuperiorPopularityType: 'NONE', // 定向-媒体定向
|
|
adPlatform: 'NONE', // 定向-平台
|
|
adPlatform: 'NONE', // 定向-平台
|
|
|
|
+ updateAdPlatform: ['NONE'],
|
|
adDeviceSelectType: ['NONE'],
|
|
adDeviceSelectType: ['NONE'],
|
|
adSelectAc: ['NONE'],
|
|
adSelectAc: ['NONE'],
|
|
adAc: '', // 定向-网络
|
|
adAc: '', // 定向-网络
|
|
@@ -1132,7 +1334,7 @@ export default {
|
|
adAndroidVersion: 'NONE', // 定向-安卓版本
|
|
adAndroidVersion: 'NONE', // 定向-安卓版本
|
|
androidChangeValue: '', // 安卓版本-自定义
|
|
androidChangeValue: '', // 安卓版本-自定义
|
|
adSmartBidType: 'SMART_BID_CUSTOM', // 投放场景
|
|
adSmartBidType: 'SMART_BID_CUSTOM', // 投放场景
|
|
- adBudget: 1, // 预算
|
|
|
|
|
|
+ adBudget: 300, // 预算
|
|
adScheduleType: 'SCHEDULE_FROM_NOW', // 投放时间
|
|
adScheduleType: 'SCHEDULE_FROM_NOW', // 投放时间
|
|
launchDateRange: [], // 设置开始和结束时间
|
|
launchDateRange: [], // 设置开始和结束时间
|
|
launchTimeInterval: 'buxian', // 投放时段
|
|
launchTimeInterval: 'buxian', // 投放时段
|
|
@@ -1152,6 +1354,7 @@ export default {
|
|
updateGetingExclude: [],
|
|
updateGetingExclude: [],
|
|
adRetargetingTagsInclude: '',
|
|
adRetargetingTagsInclude: '',
|
|
adRetargetingTagsExclude: '',
|
|
adRetargetingTagsExclude: '',
|
|
|
|
+ adAutoExtendTargets: '',
|
|
creativeCallToAction: '', // 行动号召
|
|
creativeCallToAction: '', // 行动号召
|
|
creativeLabel: undefined // 倡议标签
|
|
creativeLabel: undefined // 倡议标签
|
|
}
|
|
}
|
|
@@ -1268,6 +1471,48 @@ export default {
|
|
methods: {
|
|
methods: {
|
|
...mapGetters(['nickname', 'avatar', 'userInfo']),
|
|
...mapGetters(['nickname', 'avatar', 'userInfo']),
|
|
moment,
|
|
moment,
|
|
|
|
+ handleAdhideConver(e) {
|
|
|
|
+ const defaultValue = e.target.value;
|
|
|
|
+ if (defaultValue === 'CUSTOMER' || defaultValue === 'APP') {
|
|
|
|
+ this.configForm.adConvertedTimeDuration = 'THREE_MONTH';
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ handleAdAutoExtend(e) {
|
|
|
|
+ const defaultValue = e.target.value;
|
|
|
|
+ if (defaultValue === '0') {
|
|
|
|
+ this.AutoExtendEditSelect = [];
|
|
|
|
+ this.configForm.adAutoExtendTargets = '';
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ handleCreativeSubTitleBlur(e) {
|
|
|
|
+ const defaultValue = e.target.value;
|
|
|
|
+ let cnReg = /([\u4e00-\u9fa5]|[\u3000-\u303F]|[\uFF00-\uFF60])/;
|
|
|
|
+ let length = 0;
|
|
|
|
+ let strArr = defaultValue.split('');
|
|
|
|
+ strArr.forEach(item => {
|
|
|
|
+ if (cnReg.test(item)) {
|
|
|
|
+ length += 2;
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ length += 1;
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ if (4 <= length && length <= 24) {
|
|
|
|
+ this.subTitleMsgStatus = false;
|
|
|
|
+ this.subTitleMsg = '';
|
|
|
|
+ }
|
|
|
|
+ else if (!defaultValue) {
|
|
|
|
+ this.subTitleMsgStatus = false;
|
|
|
|
+ this.subTitleMsg = '';
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ this.subTitleMsgStatus = true;
|
|
|
|
+ this.subTitleMsg = '只能输入4-24个字符';
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ handleSelectTxtend(list) {
|
|
|
|
+ this.configForm.adAutoExtendTargets = list && list.map(item => item.value).join(',');
|
|
|
|
+ },
|
|
handleSelectPackageTabs(e) {
|
|
handleSelectPackageTabs(e) {
|
|
if (this.modalTitle === 'add') {
|
|
if (this.modalTitle === 'add') {
|
|
if (e === '1') {
|
|
if (e === '1') {
|
|
@@ -1286,10 +1531,8 @@ export default {
|
|
this.configForm.adRetargetingTagsExclude = '';
|
|
this.configForm.adRetargetingTagsExclude = '';
|
|
this.configForm.updateGetingExclude = [];
|
|
this.configForm.updateGetingExclude = [];
|
|
this.configForm.adRetargetingTagsType = '';
|
|
this.configForm.adRetargetingTagsType = '';
|
|
- if (!this.platformLoadingType) {
|
|
|
|
- this.configForm.adPlatform = 'NONE';
|
|
|
|
- this.platformLoadingType = '';
|
|
|
|
- }
|
|
|
|
|
|
+ this.configForm.adPlatform = 'NONE';
|
|
|
|
+ this.platformLoadingType = '';
|
|
this.configForm.adDeviceSelectType = ['NONE'];
|
|
this.configForm.adDeviceSelectType = ['NONE'];
|
|
this.configForm.adAndroidVersion = 'NONE';
|
|
this.configForm.adAndroidVersion = 'NONE';
|
|
this.configForm.adSelectAc = ['NONE'];
|
|
this.configForm.adSelectAc = ['NONE'];
|
|
@@ -1383,6 +1626,14 @@ export default {
|
|
this.configForm.adRetargetingTagsInclude = '';
|
|
this.configForm.adRetargetingTagsInclude = '';
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ handleClearTableAlone(list) {
|
|
|
|
+ this.configForm.updateGetingInclude = list;
|
|
|
|
+ this.configForm.adRetargetingTagsInclude = list && list.join(',');
|
|
|
|
+ },
|
|
|
|
+ handleClearTableLogic(list) {
|
|
|
|
+ this.configForm.updateGetingExclude = list;
|
|
|
|
+ this.configForm.adRetargetingTagsExclude = list && list.join(',');
|
|
|
|
+ },
|
|
handleClearlist() {
|
|
handleClearlist() {
|
|
this.configForm.updateGetingInclude = [];
|
|
this.configForm.updateGetingInclude = [];
|
|
this.configForm.adRetargetingTagsInclude = '';
|
|
this.configForm.adRetargetingTagsInclude = '';
|
|
@@ -1507,6 +1758,17 @@ export default {
|
|
this.configForm.adSelectCity = [];
|
|
this.configForm.adSelectCity = [];
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ handlePlateSelect(data) {
|
|
|
|
+ if (data.length > 1 && data.findIndex(item => item === 'NONE') === 0) {
|
|
|
|
+ data.splice(data.findIndex(item => item === 'NONE'), 1);
|
|
|
|
+ }
|
|
|
|
+ else if (data.length > 1 && data.findIndex(item => item === 'NONE') === data.length - 1) {
|
|
|
|
+ data.splice(0, data.length - 1);
|
|
|
|
+ }
|
|
|
|
+ else if (data.length === 0) {
|
|
|
|
+ data.push('NONE');
|
|
|
|
+ }
|
|
|
|
+ },
|
|
getAgeSelect(data) {
|
|
getAgeSelect(data) {
|
|
if (data.length > 1 && data.findIndex(item => item === 'NONE') === 0) {
|
|
if (data.length > 1 && data.findIndex(item => item === 'NONE') === 0) {
|
|
data.splice(data.findIndex(item => item === 'NONE'), 1);
|
|
data.splice(data.findIndex(item => item === 'NONE'), 1);
|
|
@@ -1532,17 +1794,6 @@ export default {
|
|
handleAccountBudget(e) {
|
|
handleAccountBudget(e) {
|
|
const adBudgetInput = e.target.value;
|
|
const adBudgetInput = e.target.value;
|
|
this.configForm.accountBudget = Number(Number(adBudgetInput).toFixed(2));
|
|
this.configForm.accountBudget = Number(Number(adBudgetInput).toFixed(2));
|
|
- if (this.modalTitle === 'edit') {
|
|
|
|
- if (Number(adBudgetInput) >= Number(this.defaultAdBudget) && Number(adBudgetInput) < (Number(this.defaultAdBudget) + 100)) {
|
|
|
|
- this.adBudgetShowTitle = true;
|
|
|
|
- }
|
|
|
|
- else if (Number(adBudgetInput) <= Number(this.defaultAdBudget) && Number(adBudgetInput) > (Number(this.defaultAdBudget) - 100)) {
|
|
|
|
- this.adBudgetShowTitle = true;
|
|
|
|
- }
|
|
|
|
- else {
|
|
|
|
- this.adBudgetShowTitle = false;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
},
|
|
},
|
|
handleExportRules(value, min, max, callback) {
|
|
handleExportRules(value, min, max, callback) {
|
|
let cnReg = /([\u4e00-\u9fa5]|[\u3000-\u303F]|[\uFF00-\uFF60])/;
|
|
let cnReg = /([\u4e00-\u9fa5]|[\u3000-\u303F]|[\uFF00-\uFF60])/;
|
|
@@ -1668,7 +1919,6 @@ export default {
|
|
const detailData = result.result;
|
|
const detailData = result.result;
|
|
this.configForm.accountId = detailData.accountId;
|
|
this.configForm.accountId = detailData.accountId;
|
|
if (detailData.adAudiencePackageId) {
|
|
if (detailData.adAudiencePackageId) {
|
|
- this.selectPackageTabs = '2';
|
|
|
|
getAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/getAdAudiencePackage', {accountId: detailData.accountId})
|
|
getAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/getAdAudiencePackage', {accountId: detailData.accountId})
|
|
.then(result => {
|
|
.then(result => {
|
|
if (result.code === 0) {
|
|
if (result.code === 0) {
|
|
@@ -1684,13 +1934,11 @@ export default {
|
|
console.log(error, 'eeee');
|
|
console.log(error, 'eeee');
|
|
});
|
|
});
|
|
}
|
|
}
|
|
- else {
|
|
|
|
- this.selectPackageTabs = '1';
|
|
|
|
- }
|
|
|
|
this.configForm.dpLinkStartIndex = detailData.dpLinkStartIndex;
|
|
this.configForm.dpLinkStartIndex = detailData.dpLinkStartIndex;
|
|
this.configForm.dpLinkEndIndex = detailData.dpLinkEndIndex;
|
|
this.configForm.dpLinkEndIndex = detailData.dpLinkEndIndex;
|
|
this.configForm.accountBudgetMode = detailData.accountBudgetMode;
|
|
this.configForm.accountBudgetMode = detailData.accountBudgetMode;
|
|
this.configForm.accountBudget = detailData.accountBudget;
|
|
this.configForm.accountBudget = detailData.accountBudget;
|
|
|
|
+ this.configForm.adDirectionalFlag = detailData.adDirectionalFlag;
|
|
this.configForm.campaignLandingType = detailData.campaignLandingType;
|
|
this.configForm.campaignLandingType = detailData.campaignLandingType;
|
|
this.configForm.advertisingType = detailData.advertisingType || '1';
|
|
this.configForm.advertisingType = detailData.advertisingType || '1';
|
|
this.configForm.campaignName = detailData.campaignName || '';
|
|
this.configForm.campaignName = detailData.campaignName || '';
|
|
@@ -1717,13 +1965,51 @@ export default {
|
|
this.listArr = detailData.adCity.split(',');
|
|
this.listArr = detailData.adCity.split(',');
|
|
this.configForm.adSelectCity = detailData.adCity.split(',');
|
|
this.configForm.adSelectCity = detailData.adCity.split(',');
|
|
}, 200);
|
|
}, 200);
|
|
|
|
+ let paramsData = {};
|
|
|
|
+ if (detailData.adDownloadType === 'DOWNLOAD_URL') {
|
|
|
|
+ paramsData = {
|
|
|
|
+ advancedCreativeType: 'ATTACHED_CREATIVE_NONE',
|
|
|
|
+ advertiserId: detailData.accountId,
|
|
|
|
+ appType: 'APP_ANDROID',
|
|
|
|
+ deliveryRange: 'DEFAULT',
|
|
|
|
+ externalUrl: detailData.adExternalUrl,
|
|
|
|
+ landingType: detailData.campaignLandingType,
|
|
|
|
+ packageName: detailData.adPackage,
|
|
|
|
+ promotionContent: detailData.adDownloadType
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+ else if (detailData.adDownloadType === 'EXTERNAL_URL') {
|
|
|
|
+ paramsData = {
|
|
|
|
+ advancedCreativeType: 'ATTACHED_CREATIVE_NONE',
|
|
|
|
+ advertiserId: detailData.accountId,
|
|
|
|
+ deliveryRange: 'DEFAULT',
|
|
|
|
+ externalUrl: detailData.adExternalUrl,
|
|
|
|
+ landingType: detailData.campaignLandingType,
|
|
|
|
+ promotionContent: detailData.adDownloadType
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+ postAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/getToolConvert', paramsData).then(result => {
|
|
|
|
+ if (result.code === 0) {
|
|
|
|
+ const updateResult = result.result.filter(item => item.external_actions.length > 0);
|
|
|
|
+ this.configForm.adConvertType = updateResult[0].convert_type;
|
|
|
|
+ this.optimizationOption = updateResult[0].external_actions;
|
|
|
|
+ setTimeout(() => {
|
|
|
|
+ this.configForm.adConvertId = detailData.adConvertId;
|
|
|
|
+ }, 1000);
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ this.$message.error(result.message);
|
|
|
|
+ }
|
|
|
|
+ }).catch(error => {
|
|
|
|
+ console.log(error, 'eeee');
|
|
|
|
+ });
|
|
getAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/getDMPCustomAudience', {accountId: detailData.accountId}).then(result => {
|
|
getAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/getDMPCustomAudience', {accountId: detailData.accountId}).then(result => {
|
|
if (result.code === 0) {
|
|
if (result.code === 0) {
|
|
result.result.forEach(item => {
|
|
result.result.forEach(item => {
|
|
item.key = item.custom_audience_id;
|
|
item.key = item.custom_audience_id;
|
|
});
|
|
});
|
|
this.directionalData = result.result;
|
|
this.directionalData = result.result;
|
|
- this.configForm.adRetargetingTagsType = detailData.adRetargetingTagsType || '1';
|
|
|
|
|
|
+ this.configForm.adRetargetingTagsType = detailData.adRetargetingTagsType;
|
|
if (detailData.adRetargetingTagsType === '3') {
|
|
if (detailData.adRetargetingTagsType === '3') {
|
|
this.configForm.customPerson = 'a';
|
|
this.configForm.customPerson = 'a';
|
|
this.configForm.adRetargetingTagsInclude = detailData.adRetargetingTagsInclude;
|
|
this.configForm.adRetargetingTagsInclude = detailData.adRetargetingTagsInclude;
|
|
@@ -1833,44 +2119,18 @@ export default {
|
|
if (detailData.adKeywords) {
|
|
if (detailData.adKeywords) {
|
|
this.creativeTag = detailData.adKeywords;
|
|
this.creativeTag = detailData.adKeywords;
|
|
}
|
|
}
|
|
- let paramsData = {};
|
|
|
|
- if (this.configForm.adDownloadType === 'DOWNLOAD_URL') {
|
|
|
|
- paramsData = {
|
|
|
|
- advancedCreativeType: 'ATTACHED_CREATIVE_NONE',
|
|
|
|
- advertiserId: this.configForm.accountId,
|
|
|
|
- appType: 'APP_ANDROID',
|
|
|
|
- deliveryRange: 'DEFAULT',
|
|
|
|
- externalUrl: this.configForm.adExternalUrl,
|
|
|
|
- landingType: this.configForm.campaignLandingType,
|
|
|
|
- packageName: this.configForm.adPackage,
|
|
|
|
- promotionContent: this.configForm.adDownloadType
|
|
|
|
- };
|
|
|
|
- }
|
|
|
|
- else if (this.configForm.adDownloadType === 'EXTERNAL_URL') {
|
|
|
|
- paramsData = {
|
|
|
|
- advancedCreativeType: 'ATTACHED_CREATIVE_NONE',
|
|
|
|
- advertiserId: this.configForm.accountId,
|
|
|
|
- deliveryRange: 'DEFAULT',
|
|
|
|
- externalUrl: this.configForm.adExternalUrl,
|
|
|
|
- landingType: this.configForm.campaignLandingType,
|
|
|
|
- promotionContent: this.configForm.adDownloadType
|
|
|
|
- };
|
|
|
|
- }
|
|
|
|
- postAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/getToolConvert', paramsData).then(result => {
|
|
|
|
- if (result.code === 0) {
|
|
|
|
- const updateResult = result.result.filter(item => item.external_actions.length > 0);
|
|
|
|
- this.configForm.adConvertType = updateResult[0].convert_type;
|
|
|
|
- this.optimizationOption = updateResult[0].external_actions;
|
|
|
|
- setTimeout(() => {
|
|
|
|
- this.configForm.adConvertId = detailData.adConvertId;
|
|
|
|
- }, 300);
|
|
|
|
- }
|
|
|
|
- else {
|
|
|
|
- this.$message.error(result.message);
|
|
|
|
- }
|
|
|
|
- }).catch(error => {
|
|
|
|
- console.log(error, 'eeee');
|
|
|
|
- });
|
|
|
|
|
|
+ this.configForm.adInterestActionMode = detailData.adInterestActionMode;
|
|
|
|
+ this.configForm.creativeDisplayMode = detailData.creativeDisplayMode;
|
|
|
|
+ this.configForm.creativeAppName = detailData.creativeAppName;
|
|
|
|
+ this.configForm.creativeIsPresentedVideo = detailData.creativeIsPresentedVideo;
|
|
|
|
+ this.configForm.creativeGenerateDerivedAd = detailData.creativeGenerateDerivedAd;
|
|
|
|
+ this.configForm.creativeIsCommentDisable = detailData.creativeIsCommentDisable;
|
|
|
|
+ this.configForm.creativeDownloadStatus = detailData.creativeDownloadStatus;
|
|
|
|
+ this.configForm.creativeSubTitle = detailData.creativeSubTitle;
|
|
|
|
+ this.configForm.adConvertedTimeDuration = detailData.adConvertedTimeDuration;
|
|
|
|
+ this.configForm.adDownloadMode = detailData.adDownloadMode;
|
|
|
|
+ this.configForm.adAutoExtendTargets = detailData.adAutoExtendTargets;
|
|
|
|
+ this.AutoExtendEditSelect = detailData.adAutoExtendTargets.length && detailData.adAutoExtendTargets.split(',');
|
|
}
|
|
}
|
|
else {
|
|
else {
|
|
this.$message.error(result.message);
|
|
this.$message.error(result.message);
|
|
@@ -1924,6 +2184,7 @@ export default {
|
|
postAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/addBytedanceStrategy', data).then(result => {
|
|
postAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/addBytedanceStrategy', data).then(result => {
|
|
if (result.code === 0) {
|
|
if (result.code === 0) {
|
|
this.$message.success('创建成功');
|
|
this.$message.success('创建成功');
|
|
|
|
+ this.sureLoading = false;
|
|
this.$router.replace('/account-config/account-config');
|
|
this.$router.replace('/account-config/account-config');
|
|
this.$bus.$emit('remove', '/account-config/components/configuration-modal');
|
|
this.$bus.$emit('remove', '/account-config/components/configuration-modal');
|
|
}
|
|
}
|
|
@@ -1971,7 +2232,7 @@ export default {
|
|
}
|
|
}
|
|
else if (e === 'BUDGET_MODE_DAY') {
|
|
else if (e === 'BUDGET_MODE_DAY') {
|
|
this.adBudgetNum = 0;
|
|
this.adBudgetNum = 0;
|
|
- this.configForm.adBudget = 0;
|
|
|
|
|
|
+ this.configForm.adBudget = 300;
|
|
}
|
|
}
|
|
},
|
|
},
|
|
handleDelOrigin(list) {
|
|
handleDelOrigin(list) {
|
|
@@ -2130,11 +2391,11 @@ export default {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if (this.selectPackageTabs === '2' && !this.configForm.adAudiencePackageId) {
|
|
|
|
|
|
+ if (this.configForm.adDirectionalFlag === 'choice' && !this.configForm.adAudiencePackageId) {
|
|
this.$message.error('请选择已有定向包');
|
|
this.$message.error('请选择已有定向包');
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- if (paramsFormData.customPerson === 'a') {
|
|
|
|
|
|
+ if (paramsFormData.customPerson === 'a') {
|
|
if (paramsFormData.adRetargetingTagsType === '1' && !paramsFormData.adRetargetingTagsInclude) {
|
|
if (paramsFormData.adRetargetingTagsType === '1' && !paramsFormData.adRetargetingTagsInclude) {
|
|
this.$message.error('请选择人群');
|
|
this.$message.error('请选择人群');
|
|
return;
|
|
return;
|
|
@@ -2148,6 +2409,10 @@ export default {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ if (paramsFormData.adAutoExtendEnabled === '1' && !paramsFormData.adAutoExtendTargets) {
|
|
|
|
+ this.$message.error('请选择可开放定向');
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
if (this.configForm.adScheduleType === 'SCHEDULE_START_END' && !this.configForm.launchDateRange.length) {
|
|
if (this.configForm.adScheduleType === 'SCHEDULE_START_END' && !this.configForm.launchDateRange.length) {
|
|
this.$message.error('请选择投放时间');
|
|
this.$message.error('请选择投放时间');
|
|
return;
|
|
return;
|
|
@@ -2179,6 +2444,9 @@ export default {
|
|
else {
|
|
else {
|
|
this.isAdCpaBidBlur = false;
|
|
this.isAdCpaBidBlur = false;
|
|
}
|
|
}
|
|
|
|
+ if (this.subTitleMsgStatus) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
if (paramsFormData.adverPosition === 'a') {
|
|
if (paramsFormData.adverPosition === 'a') {
|
|
paramsFormData.creativeSmartInventory = 1;
|
|
paramsFormData.creativeSmartInventory = 1;
|
|
}
|
|
}
|
|
@@ -2226,6 +2494,7 @@ export default {
|
|
paramsFormData.userId = this.userInfo().id;
|
|
paramsFormData.userId = this.userInfo().id;
|
|
this.$refs.ruleForm.validate(valid => {
|
|
this.$refs.ruleForm.validate(valid => {
|
|
if (valid) {
|
|
if (valid) {
|
|
|
|
+ this.sureLoading = true;
|
|
if (this.modalTitle === 'add') {
|
|
if (this.modalTitle === 'add') {
|
|
this.handleAddList(paramsFormData);
|
|
this.handleAddList(paramsFormData);
|
|
}
|
|
}
|
|
@@ -2246,6 +2515,7 @@ export default {
|
|
putAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/edit', queryData).then(result => {
|
|
putAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/edit', queryData).then(result => {
|
|
if (result.code === 0) {
|
|
if (result.code === 0) {
|
|
this.$message.success(result.message);
|
|
this.$message.success(result.message);
|
|
|
|
+ this.sureLoading = false;
|
|
this.$router.replace('/account-config/account-config');
|
|
this.$router.replace('/account-config/account-config');
|
|
this.$bus.$emit('remove', '/account-config/components/configuration-modal');
|
|
this.$bus.$emit('remove', '/account-config/components/configuration-modal');
|
|
}
|
|
}
|