Kaynağa Gözat

merge bug-yufei

jiayufei 4 yıl önce
ebeveyn
işleme
fe0c7cd22d

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

@@ -5,5 +5,5 @@
 
 // export const urlAcount = 'http://118.24.244.213:8080'; // 线上
 // export const urlAcount = 'http://apipre.tjyourong.com.cn'; // 预生产
-export const urlAcount = 'http://192.168.1.43:8080'; // 子安
-// export const urlAcount = 'http://139.186.165.84:8080'; // 测试
+// export const urlAcount = 'http://192.168.1.43:8080'; // 子安
+export const urlAcount = 'http://139.186.165.84:8080'; // 测试

+ 23 - 0
src/views/modules/account-config/components/configuration-modal.less

@@ -81,6 +81,29 @@
                 margin-left: 40px !important;
             }
             .select-orientation-class {
+                // /deep/ .ant-select-selection--single .ant-select-selection__rendered {
+                //     display: flex;
+                //     justify-content: space-between;
+                // }
+                // /deep/ .ant-select-selection-selected-value {
+                //     clear: both;
+                //     width: 320px;
+                // }
+                .orient-list {
+                    display: flex;
+                    justify-content: space-between;
+                    width: 240px;
+                    .orient-option-left {
+                        float: left;
+                        // width: 150px;
+                        // white-space: nowrap;
+                        // overflow: hidden;
+                        // text-overflow: ellipsis;
+                    }
+                    .orient-option-right {
+                        float: right;
+                    }
+                }
                 .ant-form-item-label {
                     width: 200px;
                 }

+ 200 - 56
src/views/modules/account-config/components/configuration-modal.vue

@@ -169,13 +169,76 @@
                         />
                     </a-form-model-item>
                 </div>
-                <div class="separate-module-con">
-                    <p class="rock-title">投放内容</p>
-                    <a-form-model-item label="投放目标">
-                        <a-radio-group
-                            :disabled="modalTitle === 'edit'"
-                            v-model="configForm.launchTarget"
-                            button-style="solid"
+                <a-form-model-item label="预算方式">
+                    <a-radio-group
+                        v-model="configForm.accountBudgetMode"
+                        button-style="solid"
+                        @change="handleAccountMode"
+                    >
+                        <a-radio-button value="1">不限预算</a-radio-button>
+                        <a-radio-button value="2">指定预算</a-radio-button>
+                    </a-radio-group>
+                </a-form-model-item>
+                <a-form-model-item v-if="configForm.accountBudgetMode === '2'" label="账户日预算" prop="accountBudget">
+                    <a-input-number
+                        v-model="configForm.accountBudget"
+                        :min="1000"
+                        :max="9999999.99"
+                        :step="0.01"
+                        @blur="handleAccountBudget"
+                    /> 元
+                </a-form-model-item>
+                <!-- <a-form-model-item v-if="configForm.accountBudgetMode === '2'" label="账户日预算" prop="accountBudget">
+                    <a-input-number
+                        v-model="configForm.accountBudget"
+                        :min="1000"
+                        :max="9999999.99"
+                        :step="0.01"
+                        @blur="handleAccountBudget"
+                    /> 元
+                </a-form-model-item> -->
+                <!-- <div v-if="adBudgetShowTitle" style="width: 500px;color: #f00;margin-left: 140px;">单次修改预算幅度, 不能低于100.0元</div> -->
+            </div>
+            <div class="separate-module-con">
+                <p class="rock-title">广告组信息</p>
+                <a-form-model-item label="推广目标">
+                    <a-radio-group :disabled="modalTitle === 'edit'" v-model="configForm.campaignLandingType" button-style="solid">
+                        <a-radio-button value="APP">应用</a-radio-button>
+                        <a-radio-button value="LINK" disabled>销售线索收集</a-radio-button>
+                        <a-radio-button value="SHOP" disabled>电商店铺推广</a-radio-button>
+                    </a-radio-group>
+                </a-form-model-item>
+                <a-form-model-item label="广告类型">
+                    <a-radio-group :disabled="modalTitle === 'edit'" v-model="configForm.advertisingType" button-style="solid">
+                        <a-radio-button value="1">信息流广告</a-radio-button>
+                        <a-radio-button value="2">搜索广告</a-radio-button>
+                    </a-radio-group>
+                </a-form-model-item>
+            </div>
+            <div class="separate-module-con">
+                <p class="rock-title">基础信息</p>
+                <a-form-model-item label="广告组名称" prop="campaignName">
+                    <a-input
+                        class="common-input-long"
+                        v-model="configForm.campaignName"
+                        allow-clear
+                        placeholder="请输入广告组名称"
+                    />
+                </a-form-model-item>
+                <a-form-model-item label="广告计划名称" prop="adName">
+                    <a-input
+                        class="common-input-long"
+                        id="groupName"
+                        v-model="configForm.adName"
+                        allow-clear
+                        placeholder="请输入广告计划名称"
+                    />
+                    <div>
+                        <a-tag
+                            v-for="item in adNameTags"
+                            :key="item"
+                            color="#1890ff"
+                            @click="handleGetChangeAll(item, 'groupName')"
                         >
                             <a-radio-button value="OCPM">转化量</a-radio-button>
                             <a-radio-button value="CPC" disabled>点击量</a-radio-button>
@@ -387,34 +450,84 @@
                                     button-style="solid"
                                     @change="handleCustomPerson"
                                 >
-                                    <a-radio-button value="NONE">不限</a-radio-button>
-                                    <a-radio-button value="a">自定义人群</a-radio-button>
-                                </a-radio-group>
-                            </a-form-model-item>
-                            <a-form-model-item v-if="configForm.customPerson === 'a'" label="定向逻辑">
-                                <a-radio-group
-                                    v-model="configForm.adRetargetingTagsType"
-                                    button-style="solid"
-                                    @change="handleDirectionalLogic"
+                                    {{ item.name }}
+                                </a-radio-button>
+                            </a-radio-group>
+                        </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-radio-group v-model="configForm.adAutoExtendEnabled" button-style="solid" @change="handleAdAutoExtend">
+                                <a-radio-button value="0">不开启</a-radio-button>
+                                <a-radio-button value="1">开启</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>
+                        <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 key="choice" tab="选择定向包">
+                        <a-form-model-item class="select-orientation-class" label="选择已有定向包" :prop="configForm.adDirectionalFlag === 'choice' ? 'adAudiencePackageId' : ''">
+                            <a-select
+                                class="common-input-long"
+                                style="width: 320px;"
+                                v-model="configForm.adAudiencePackageId"
+                                allow-clear
+                                placeholder="请选择已有定向包名称"
+                                :disabled="selectOrientPlaceholder !== 'able'"
+                                @change="handleSelectiveOrientation"
+                            >
+                                <a-select-option
+                                    v-for="(item, index) in selectiveList"
+                                    :key="index"
+                                    :value="item.audience_package_id"
                                 >
-                                    <a-radio-button value="1">定向</a-radio-button>
-                                    <a-radio-button value="2">排除</a-radio-button>
-                                    <a-radio-button value="3">同时定向排除</a-radio-button>
-                                </a-radio-group>
-                            </a-form-model-item>
-                            <div v-if="configForm.customPerson === 'a' && configForm.adRetargetingTagsType === '1'" class="adver-position-radio">
-                                <div style="width: 60%;">
-                                    <directional-logic
-                                        ref="direct"
-                                        packtype="directional"
-                                        multitype="alone"
-                                        :defaultlist="directionalData"
-                                        :valueids="configForm.adRetargetingTagsType"
-                                        :updatelistinclude="configForm.updateGetingInclude" @selection-alone-event="handleSelectionAloneEvent"
-                                        @clearlist="handleClearlist"
-                                        @clear-table-alone="handleClearTableAlone"
-                                    >
-                                    </directional-logic>
+                                    <div class="orient-list">
+                                        <span class="orient-option-left" style="display: inline-block;width: 150px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">{{ item.name }}</span>
+                                        <span class="orient-option-right" style="display: inline-block;width: 150px;text-align:right;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">{{ item.changeName }}</span>
+                                    </div>
+                                </a-select-option>
+                            </a-select>
+                            <span style="margin-left: 20px;">
+                                <a-button :disabled="selectOrientPlaceholder !== 'able'" type="primary" @click="handleAsyncPackage">同步定向包</a-button>
+                            </span>
+                            <a-tooltip placement="top">
+                                <template slot="title">
+                                    <span>已有定向包只展示当前推广目的和投放范围下,定向功能升级后仍可用的定向包</span>
+                                </template>
+                                <a-icon class="form-itrm-icon orientation-icon" type="question-circle"/>
+                            </a-tooltip>
+                        </a-form-model-item>
+                        <span v-if="selectOrientPlaceholder !== 'able'" style="color: #f00; margin-left: 198px;">{{ selectOrientPlaceholder }}</span>
+                        <div class="select-orientation-content">
+                            <p class="orientation-header-title">已选定向信息</p>
+                            <div v-if="packageMessageDetail.length" class="orientation-content-substance">
+                                <div class="content-substance-singal">
+                                    <span class="singal-spn">定向人群包:</span>
+                                    <span class="singal-content">{{ packageMessageDetail[0].description }}</span>
                                 </div>
                             </div>
                             <div v-if="configForm.customPerson === 'a' && configForm.adRetargetingTagsType === '2'" class="adver-position-radio">
@@ -1114,6 +1227,9 @@ export default {
                     callback();
                 }
             }
+            else if (this.modalTitle === 'add') {
+                callback();
+            }
         };
         return {
             sureLoading: false,
@@ -1235,7 +1351,7 @@ export default {
             listArr: [],
             regionCityListUrl: 'ctop/bytedanceAreaInfo/list',
             defaultAdBudget: '',
-            adBudgetShowTitle: false,
+            // adBudgetShowTitle: false,/
             adBudgetNum: 300,
             campaignStatus: false,
             detailData: {},
@@ -1251,6 +1367,44 @@ export default {
                 value: 'industryId',
                 children: 'children'
             },
+            promotionTypeList: [
+                {
+                    value: 'EXTERNAL',
+                    label: '落地页'
+                },
+                {
+                    value: 'ARTICLE',
+                    label: '文章推广'
+                },
+                {
+                    value: 'GOODS',
+                    label: '商品推广'
+                },
+                {
+                    value: 'DPA',
+                    label: '商品目录'
+                },
+                {
+                    value: 'STORE',
+                    label: '门店推广'
+                },
+                {
+                    value: 'AWEME',
+                    label: '抖音号推广'
+                },
+                {
+                    value: 'SHOP',
+                    label: '店铺直投'
+                },
+                {
+                    value: 'APP_ANDROID',
+                    label: '应用下载-安卓'
+                },
+                {
+                    value: 'APP_IOS',
+                    label: '应用下载-IOS'
+                }
+            ],
             ageArr: [
                 {
                     value: 'NONE',
@@ -1457,12 +1611,6 @@ export default {
             if (!this.configForm.accountId) {
                 return '请选择账户';
             }
-            else if (this.configForm.adDownloadType === 'DOWNLOAD_URL' && !this.platformLoadingType) {
-                return '请填写投放内容';
-            }
-            else if (this.configForm.adDownloadType === 'EXTERNAL_URL' && !this.configForm.adExternalUrl) {
-                return '请填写投放内容';
-            }
             else {
                 return 'able';
             }
@@ -1497,7 +1645,6 @@ export default {
                     promotionContent: this.configForm.adDownloadType
                 };
                 this.handleGetOptimizationObjective(paramsData);
-                this.handleGetAdAudiencePackage();
             }
         },
         NewAdPackage(newVal, oldVal) {
@@ -1515,11 +1662,6 @@ export default {
                 this.handleGetOptimizationObjective(paramsData);
             }
         },
-        platformLoadingType(newVal, oldVal) {
-            if (newVal && this.configForm.accountId) {
-                this.handleGetAdAudiencePackage();
-            }
-        },
         NewAountId(newVal, oldVal) {
             if (newVal && this.configForm.adPackage) {
                 const paramsData = {
@@ -1534,13 +1676,11 @@ export default {
                 };
                 this.handleGetOptimizationObjective(paramsData);
             }
-            if (newVal && this.platformLoadingType) {
-                this.handleGetAdAudiencePackage();
-            }
             if (newVal) {
                 this.handleGetCreativeClassification();
                 this.handleGetAdvertiserStrategy();
                 this.handleDirectionalList();
+                this.handleGetAdAudiencePackage()
             }
             else {
                 this.createOptions = [];
@@ -1760,13 +1900,20 @@ export default {
         },
         handleGetAdAudiencePackage() {
             const params = {
-                accountId: this.configForm.accountId,
-                landingType: this.configForm.adDownloadType === 'DOWNLOAD_URL' ? this.platformLoadingType : 'EXTERNAL'
+                accountId: this.configForm.accountId
             };
             getAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/getAdAudiencePackage', params)
                 .then(result => {
                     if (result.code === 0) {
-                        this.selectiveList = result.result || [];
+                        const defaultList = result.result;
+                        this.promotionTypeList.forEach(item => {
+                            defaultList.forEach(val => {
+                                if (item.landing_type === val.value) {
+                                    val.changeName = item.label;
+                                }
+                            });
+                        });
+                        this.selectiveList = defaultList;
                     }
                     else {
                         this.$message.error(result.message);
@@ -2480,9 +2627,6 @@ export default {
         },
         handleRelaxSure() {
             let paramsFormData = this.configForm;
-            if (this.adBudgetShowTitle) {
-                return;
-            }
             if (this.configForm.adDistrict === 'CITY') {
                 if (!this.configForm.adSelectCity.length) {
                     this.$message.error('请选择省市');