Browse Source

账户配置 定向包

jiayufei 4 years ago
parent
commit
eece3f389d

+ 2 - 2
src/views/modules/account-config/account-config-server.js

@@ -1,2 +1,2 @@
-export const urlAcount = 'http://118.24.244.213:8080';
-// export const urlAcount = 'http://192.168.1.43:8080';
+// export const urlAcount = 'http://118.24.244.213:8080';
+export const urlAcount = 'http://192.168.1.43:8080';

+ 172 - 146
src/views/modules/account-config/components/configuration-modal.vue

@@ -360,12 +360,13 @@
                         </a-form-model-item>
                         <a-form-model-item v-if="configForm.adConvertType" label="过滤已转化用户">
                             <a-radio-group v-model="configForm.adHideIfConverted" button-style="solid">
-                                <a-radio-button value="NO_EXCLUDE">不限</a-radio-button>
-                                <a-radio-button value="AD">广告计划</a-radio-button>
-                                <a-radio-button value="CAMPAIGN">广告组</a-radio-button>
-                                <a-radio-button value="ADVERTISER">广告账户</a-radio-button>
-                                <a-radio-button value="CUSTOMER">公司账户</a-radio-button>
-                                <a-radio-button value="APP">APP</a-radio-button>
+                                <a-radio-button
+                                    v-for="item in adHideIfConvertedDataOption"
+                                    :key="item.id"
+                                    :value="item.id"
+                                >
+                                    {{ item.name }}
+                                </a-radio-button>
                             </a-radio-group>
                         </a-form-model-item>
                         <a-form-model-item label="智能放量">
@@ -376,16 +377,22 @@
                         </a-form-model-item>
                     </a-tab-pane>
                     <a-tab-pane key="2" tab="选择定向包">
-                        <a-form-model-item class="select-orientation-class" label="选择已有定向包" prop="selectiveOrientation">
+                        <a-form-model-item class="select-orientation-class" label="选择已有定向包" prop="adAudiencePackageId">
                             <a-select
                                 class="common-input-long"
-                                v-model="configForm.selectiveOrientation"
+                                v-model="configForm.adAudiencePackageId"
+                                allow-clear
                                 :placeholder="selectOrientPlaceholder"
                                 :disabled="selectOrientPlaceholder !== '请选择已有定向包名称'"
                                 @change="handleSelectiveOrientation"
                             >
-                                <a-select-option value="BUDGET_MODE_DAY">日预算</a-select-option>
-                                <a-select-option value="BUDGET_MODE_TOTAL">总预算</a-select-option>
+                                <a-select-option
+                                    v-for="(item, index) in selectiveList"
+                                    :key="index"
+                                    :value="item.audience_package_id"
+                                >
+                                    {{ item.name }}
+                                </a-select-option>
                             </a-select>
                             <a-tooltip placement="top">
                                 <template slot="title">
@@ -397,20 +404,20 @@
                         </a-form-model-item>
                         <div class="select-orientation-content">
                             <p class="orientation-header-title">已选定向信息</p>
-                            <!-- <div class="orientation-content-msg">
-                                <div><a-icon type="container"/></div>
-                                <div>请在上方选择一个已有定向包</div>
-                            </div> -->
-                            <div class="orientation-content-substance">
+                            <div v-if="packageMessageDetail.length" class="orientation-content-substance">
                                 <div class="content-substance-singal">
                                     <span class="singal-spn">定向人群包:</span>
-                                    <span>行业通用人群包</span>
+                                    <!-- <span>{{ packageMessageDetail[0].description }}</span> -->
                                 </div>
                                 <div class="content-substance-singal">
                                     <span class="singal-spn">地域:</span>
                                     <span>北京、和白、天津</span>
                                 </div>
                             </div>
+                            <div v-else class="orientation-content-msg">
+                                <div><a-icon type="container"/></div>
+                                <div>请在上方选择一个已有定向包</div>
+                            </div>
                         </div>
                     </a-tab-pane>
                 </a-tabs>
@@ -476,13 +483,13 @@
                     </a-radio-group>
                 </a-form-model-item>
                 <a-form-model-item label="出价方式">
-                    <a-radio-group v-model="configForm.biddingMethod" button-style="solid" @change="handleBiddingMethod">
-                        <a-radio-button value="a">固定出价</a-radio-button>
-                        <a-radio-button value="b">随机出价</a-radio-button>
-                        <a-radio-button value="c">阶段出价</a-radio-button>
+                    <a-radio-group v-model="configForm.adBidCreateType" button-style="solid" @change="handleBiddingMethod">
+                        <a-radio-button value="FIX">固定出价</a-radio-button>
+                        <a-radio-button value="RAND">随机出价</a-radio-button>
+                        <a-radio-button value="STEP">阶段出价</a-radio-button>
                     </a-radio-group>
                 </a-form-model-item>
-                <a-form-model-item v-if="configForm.biddingMethod === 'a'" label="目标转化出价" :prop="configForm.launchTarget === 'OCPM' ? 'adCpaBid' : ''">
+                <a-form-model-item v-if="configForm.adBidCreateType === 'FIX'" label="目标转化出价" :prop="configForm.launchTarget === 'OCPM' ? 'adCpaBid' : ''">
                     <a-input-number
                         class="common-input"
                         v-model="configForm.adCpaBid"
@@ -492,59 +499,56 @@
                     /> 元
                     <div v-if="isAdCpaBidBlur" style="width: 500px;color: #f00;">{{ adCpaBidBlurTxt }}</div>
                 </a-form-model-item>
-                <a-form-model-item v-if="configForm.biddingMethod === 'b'" label="目标转化出价" class="dp-link-start">
-                    <a-input-number
-                        class="common-input"
-                        v-model="configForm.adCpaBid11"
-                        :min="0.1"
-                        :max="10000"
-                        placeholder="请输入"
-                        @blur="handleAdCpaBidOneBlur"
-                    />
-                    <span>~</span>
-                    <span class="especial-label cpaBid-mode-label">*</span>
-                    <div v-if="isAdCpaBid11Blur" style="width: 500px;color: #f00;">{{ adCpaBid11BlurTxt }}</div>
-                </a-form-model-item>
-                <a-form-model-item v-if="configForm.biddingMethod === 'b'" class="dp-link-end">
-                    <a-input-number
-                        class="common-input"
-                        v-model="configForm.adCpaBid122"
-                        :min="0.1"
-                        :max="10000"
-                        placeholder="请输入"
-                        @blur="handleAdCpaBidTwoBlur"
-                    />
-                </a-form-model-item>
-                <a-form-model-item v-if="configForm.biddingMethod === 'c'" label="目标转化出价" class="dp-link-start">
-                    <a-input-number
-                        class="common-input"
-                        v-model="configForm.ladderOne"
-                        :min="0.1"
-                        :max="10000"
-                        placeholder="请输入"
-                        @blur="handleLadderOneBlur"
-                    />
-                    <span>~</span>
-                    <span class="especial-label cpaBid-mode-label">*</span>
-                    <div v-if="isLadderBlur" style="width: 500px;color: #f00;">{{ ladderBlurTxt }}</div>
-                </a-form-model-item>
-                <a-form-model-item v-if="configForm.biddingMethod === 'c'" class="dp-link-end">
-                    <a-input-number
-                        class="common-input"
-                        v-model="configForm.ladderTwo"
-                        :min="0.1"
-                        :max="10000"
-                        placeholder="请输入"
-                        @blur="handleLadderTwoBlur"
-                    />
-                </a-form-model-item>
-                <a-form-model-item v-if="configForm.biddingMethod === 'c'" label="浮动间隔" prop="floatingInterval">
-                    <a-input-number
-                        class="common-input"
-                        v-model="configForm.floatingInterval"
-                        placeholder="请输入"
-                    /> 元
-                </a-form-model-item>
+                <div v-if="configForm.adBidCreateType === 'RAND'">
+                    <a-form-model-item label="目标转化出价"
+                    class="dp-link-start" prop="adMinBid">
+                        <a-input-number
+                            class="common-input"
+                            v-model="configForm.adMinBid"
+                            :min="0.1"
+                            :max="10000"
+                            placeholder="请输入"
+                        />
+                        <span>~</span>
+                    </a-form-model-item>
+                    <a-form-model-item class="dp-link-end" prop="adMaxBid">
+                        <a-input-number
+                            class="common-input"
+                            v-model="configForm.adMaxBid"
+                            :min="0.1"
+                            :max="10000"
+                            placeholder="请输入"
+                        />
+                    </a-form-model-item>
+                </div>
+                <div v-if="configForm.adBidCreateType === 'STEP'">
+                    <a-form-model-item label="目标转化出价" class="dp-link-start" prop="adMinBid">
+                        <a-input-number
+                            class="common-input"
+                            v-model="configForm.adMinBid"
+                            :min="0.1"
+                            :max="10000"
+                            placeholder="请输入"
+                        />
+                        <span>~</span>
+                    </a-form-model-item>
+                    <a-form-model-item class="dp-link-end" prop="adMaxBid">
+                        <a-input-number
+                            class="common-input"
+                            v-model="configForm.adMaxBid"
+                            :min="0.1"
+                            :max="10000"
+                            placeholder="请输入"
+                        />
+                    </a-form-model-item>
+                    <a-form-model-item label="浮动间隔" prop="adStepBid">
+                        <a-input-number
+                            class="common-input"
+                            v-model="configForm.adStepBid"
+                            placeholder="请输入"
+                        /> 元
+                    </a-form-model-item>
+                </div>
             </div>
             <div class="separate-module-con">
                 <p class="rock-title">第三方检测链接</p>
@@ -764,15 +768,61 @@ export default {
             this.handleExportRules(value, 4, 20, callback);
         };
         let floatingIntervalValidator = (rule, value, callback) => {
-            const finallyResult = Number(this.configForm.ladderOne) + Number(value);
-            if (finallyResult < Number(this.configForm.ladderTwo)) {
+            const finallyResult = Number(this.configForm.adMinBid) + Number(value);
+            if (finallyResult < Number(this.configForm.adMaxBid)) {
                 callback();
             }
             else {
                 callback('最低出价+浮动间隔<最高出价');
             }
         };
+        let adMinBidValidator = (rule, value, callback) => {
+            const finallyResult = Number(this.configForm.adMaxBid);
+            if (finallyResult !== '' && value && Number(value) < finallyResult) {
+                callback();
+            }
+            else {
+                callback('最低出价不能高于最高出价');
+            }
+        };
+        let adMaxBidValidator = (rule, value, callback) => {
+            const finallyResult = Number(this.configForm.adMinBid);
+            if (finallyResult !== '' && value && Number(value) > finallyResult) {
+                callback();
+            }
+            else {
+                callback('最高出价不能低于最低出价');
+            }
+        };
         return {
+            adHideIfConvertedDataOption: [ // 过滤已转化用户option
+                {
+                    id: 'NO_EXCLUDE',
+                    name: '不限'
+                },
+                {
+                    id: 'AD',
+                    name: '广告计划'
+                },
+                {
+                    id: 'CAMPAIGN',
+                    name: '广告组'
+                },
+                {
+                    id: 'ADVERTISER',
+                    name: '广告账户'
+                },
+                {
+                    id: 'CUSTOMER',
+                    name: '公司账户'
+                },
+                {
+                    id: 'APP',
+                    name: 'APP'
+                }
+            ],
+            packageMessageDetail: [],
+            selectiveList: [],
             isLadderBlur: false,
             ladderBlurTxt: '',
             isAdCpaBid11Blur: false,
@@ -874,10 +924,18 @@ export default {
                 adCpaBid: [
                     {required: true, message: '请输入', trigger: 'blur'}
                 ],
-                floatingInterval: [
+                adStepBid: [
                     {required: true, message: '请输入', trigger: 'blur'},
                     {validator: floatingIntervalValidator, trigger: 'blur'}
                 ],
+                adMinBid: [
+                    {required: true, message: '请输入最低出价', trigger: 'blur'},
+                    {validator: adMinBidValidator, trigger: 'blur'}
+                ],
+                adMaxBid: [
+                    {required: true, message: '请输入最高出价', trigger: 'blur'},
+                    {validator: adMaxBidValidator, trigger: 'blur'}
+                ],
                 adName: [
                     {required: true, message: '请输入广告计划名称'},
                     {validator: handleCharacterLen100, trigger: 'blur'}
@@ -886,7 +944,7 @@ export default {
                     {required: true, message: '请输入', trigger: 'blur'},
                     {min: 1, max: 7, message: '请输入1-7个字', trigger: 'blur'}
                 ],
-                selectiveOrientation: [{required: true, message: '请选择', trigger: 'change'}],
+                adAudiencePackageId: [{required: true, message: '请选择', trigger: 'change'}],
                 creativeCallToAction: [{required: true, message: '请选择', trigger: 'change'}],
                 adConvertType: [{required: true, message: '请选择', trigger: 'change'}],
                 adConvertId: [{required: true, message: '请选择', trigger: 'change'}],
@@ -894,13 +952,13 @@ export default {
             },
             configForm: {
                 directionalLogic: '',
-                selectiveOrientation: undefined,
-                floatingInterval: 0,
+                adAudiencePackageId: undefined,
+                adStepBid: 0,
                 ladderOne: '',
                 ladderTwo: '',
-                adCpaBid11: '',
-                adCpaBid22: '',
-                biddingMethod: 'a',
+                adMinBid: '',
+                adMaxBid: '',
+                adBidCreateType: 'FIX',
                 creativeOptions: [],
                 advancedCreativeType: 'ATTACHED_CREATIVE_NONE',
                 adLocationType: 'HOME',
@@ -1033,6 +1091,7 @@ export default {
             }
             this.handleGetCreativeClassification();
             this.handleGetAdvertiserStrategy();
+            this.handleGetAdAudiencePackage();
         }
     },
     mounted() {
@@ -1048,73 +1107,35 @@ export default {
     methods: {
         ...mapGetters(['nickname', 'avatar', 'userInfo']),
         moment,
+        handleGetAdAudiencePackage() {
+            const params = {
+                accountId: this.configForm.accountId
+            };
+            getAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/getAdAudiencePackage', params)
+                .then(result => {
+                    if (result.code === 0) {
+                        console.log(result, 'result---0000----0000');
+                        this.selectiveList = result.result;
+                    }
+                    else {
+                        this.$message.error(result.message);
+                    }
+                })
+                .catch(error => {
+                    console.log(error, 'eeee');
+                });
+        },
         handleSelectiveOrientation(e) {
             console.log(e, '----选择定向包');
+            const defaultData = this.selectiveList.filter(item => item.audience_package_id === e);
+            this.packageMessageDetail = defaultData;
+            console.log(this.packageMessageDetail, 'this.packageMessageDetail');
         },
         handleBiddingMethod(e) {
-            console.log(e, '---e---ebid--出价方式');
-        },
-        handleAdCpaBidOneBlur(e) {
-            console.log(e.target.value, 'e----one--one');
-            const defaultTxt = e.target.value;
-            if (!defaultTxt) {
-                this.isAdCpaBid11Blur = true;
-                this.adCpaBid11BlurTxt = '请输入最低出价';
-            }
-            else if (defaultTxt > this.configForm.adCpaBid122) {
-                this.isAdCpaBid11Blur = true;
-                this.adCpaBid11BlurTxt = '最低出价不能大于最高出价';
-            }
-            else {
-                this.isAdCpaBid11Blur = false;
-                this.adCpaBid11BlurTxt = '';
-            }
-        },
-        handleAdCpaBidTwoBlur(e) {
-            console.log(e.target.value, 'e----two--two');
-            const defaultTxt = e.target.value;
-            if (!defaultTxt) {
-                this.isAdCpaBid11Blur = true;
-                this.adCpaBid11BlurTxt = '请输入最高出价';
-            }
-            else if (defaultTxt < this.configForm.adCpaBid11) {
-                this.isAdCpaBid11Blur = true;
-                this.adCpaBid11BlurTxt = '最低出价不能大于最高出价';
-            }
-            else {
-                this.isAdCpaBid11Blur = false;
-                this.adCpaBid11BlurTxt = '';
-            }
-        },
-        handleLadderOneBlur(e) {
-            const defaultTxt = e.target.value;
-            if (!defaultTxt) {
-               this.isLadderBlur = true;
-               this.ladderBlurTxt = '请输入最低出价';
-            }
-            else if (this.configForm.ladderTwo && defaultTxt > this.configForm.ladderTwo) {
-                this.isLadderBlur = true;
-                this.ladderBlurTxt = '最低出价不能大于最高出价';
-            }
-            else {
-                this.isLadderBlur = false;
-                this.ladderBlurTxt = '';
-            }
-        },
-        handleLadderTwoBlur(e) {
-            const defaultTxt = e.target.value;
-            if (!defaultTxt) {
-               this.isLadderBlur = true;
-               this.ladderBlurTxt = '请输入最高出价';
-            }
-            else if (this.configForm.ladderOne && defaultTxt < this.configForm.ladderOne) {
-                this.isLadderBlur = true;
-                this.ladderBlurTxt = '最低出价不能大于最高出价';
-            }
-            else {
-                this.isLadderBlur = false;
-                this.ladderBlurTxt = '';
-            }
+            this.configForm.adCpaBid = 0;
+            this.configForm.adMinBid = '';
+            this.configForm.adMaxBid = '';
+            this.configForm.adStepBid = 0;
         },
         handleAdCpaBidBlur(e) {
             const defaultValue = e.target.value;
@@ -1355,6 +1376,11 @@ export default {
                         this.configForm.creativeEnablePersonalAction = detailData.creativeEnablePersonalAction;
                         this.configForm.creativeCallToAction = detailData.creativeCallToAction;
                         this.configForm.creativeSource = detailData.creativeSource;
+                        this.configForm.adBidCreateType = detailData.adBidCreateType;
+                        this.configForm.adMinBid = detailData.adMinBid;
+                        this.configForm.adMaxBid = detailData.adMaxBid;
+                        this.configForm.adStepBid = detailData.adStepBid;
+                        this.configForm.adBidCreateType = detailData.adBidCreateType;
                         this.configForm.creativeThirdIndustryIds[0] = detailData.creativeThirdIndustryId.substr(0, 4);
                         this.configForm.creativeThirdIndustryIds[1] = detailData.creativeThirdIndustryId.substr(0, 6);
                         this.configForm.creativeThirdIndustryIds[2] = detailData.creativeThirdIndustryId;