Преглед на файлове

账户配置功能迭代

jiayufei преди 4 години
родител
ревизия
c99fee86db

+ 2 - 2
src/utils/request.js

@@ -16,8 +16,8 @@ else if (process.env.NODE_ENV == 'debug') {
 else if (process.env.NODE_ENV == 'production') { 
   
   // axios.defaults.baseURL = 'http://apipre.tjyourong.com.cn/jeecg-boot';//预生产
-  // axios.defaults.baseURL = 'http://139.186.165.84:8806/jeecg-boot';     
-  axios.defaults.baseURL = 'http://api.tjyourong.com.cn/jeecg-boot';//生产环境
+  axios.defaults.baseURL = 'http://139.186.165.84:8806/jeecg-boot';     
+  // axios.defaults.baseURL = 'http://api.tjyourong.com.cn/jeecg-boot';//生产环境
 }
 const service = axios.create({
 //   baseURL: '/jeecg-boot', // api base_url

+ 2 - 3
src/views/modules/account-config/account-config.vue

@@ -211,7 +211,7 @@ export default {
             }
         };
         let adCpaBidValidator = (rule, value, callback) => {
-            if (Number(this.updateModTxt.accountBudget) < Number(value)) {
+            if (Number(this.updateModTxt.adBudget) < Number(value)) {
                 callback('出价不能大于预算');
             }
             else {
@@ -220,11 +220,10 @@ export default {
         };
         let adMaxBidValidator = (rule, value, callback) => {
             const finallyResult = Number(this.configForm.adMinBid);
-            console.log(this.updateModTxt.accountBudget, value, '----999--0-');
             if (finallyResult && value && Number(value) < finallyResult) {
                 callback('最高出价不能低于最低出价');
             }
-            else if (Number(this.updateModTxt.accountBudget) < Number(value)) {
+            else if (Number(this.updateModTxt.adBudget) < Number(value)) {
                 callback('出价不能大于预算');
             }
             else if (Number(this.configForm.adMaxBid) > Number(this.configForm.adMinBid) + Number(this.configForm.adStepBid)) {

+ 119 - 0
src/views/modules/account-config/components/check-more-plat/check-more-plat.less

@@ -0,0 +1,119 @@
+.ul-radio-group {
+    border-radius: 5px;
+    height: 32px;
+    padding: 0;
+    margin: 0;
+    border: none;
+    background: transparent;
+    .btn {
+        background: transparent;
+        padding: 0;
+        margin: 0;
+        border: none;
+    }
+    .item {
+        min-width: 80px;
+        padding: 0px 15px;
+        text-align: center;
+        display: inline-block;
+        border: 1px solid #ccc;
+        border-left: 0;
+        height: 32px;
+        line-height: 32px;
+        cursor: pointer;
+        .checkbox-button-input {
+            width: 0;
+            height: 0;
+            opacity: 0;
+        }
+        .ant-checkbox {
+            display: none;
+        }
+    }
+    .bgcolor {
+        color: rgba(0, 0, 0, 0.25);
+        background-color: #f5f5f5;
+        border-color: #d9d9d9;
+        cursor: not-allowed;
+    }
+    .item::after {
+        content: '';
+        position: absolute;
+        right: 1px;
+        top: -2px;
+        width: 0;
+        height: 0;
+        border-top: 6px solid transparent;
+        border-bottom: 6px solid transparent;
+        border-left: 6px solid;
+        border-left-color: #e0e0e0;
+        -webkit-transform: rotate(-45deg);
+        -ms-transform: rotate(-45deg);
+        transform: rotate(-45deg);
+        border-radius: 2px;
+    }
+    .item:hover {
+        color: #1890ff;
+    }
+    .selection {
+        color: #fff;
+        background: #1890ff;
+    }
+    .item.selection:hover {
+        color: #fff;
+        background: #40a9ff;
+    }
+    .item.selection:after {
+        border-left: 6px solid #1890ff;
+    }
+    .item:hover::after {
+        border-left: 6px solid #40a9ff;
+    }
+    .bgcolor:hover {
+        color: rgba(0, 0, 0, 0.25);
+        background-color: #f5f5f5;
+        border-color: #d9d9d9;
+        cursor: not-allowed;
+    }
+    .bgcolor:hover::after {
+        border-left: 6px solid #e0e0e0;
+    }
+    .bgcolor.selection:after {
+        border-left: 6px solid #e0e0e0;
+    }
+    .bgcolor.selection {
+        color: rgba(0, 0, 0, 0.25);
+        background-color: #f5f5f5;
+        border-color: #d9d9d9;
+        cursor: not-allowed;
+    }
+    .bgcolor.selection:hover {
+        color: rgba(0, 0, 0, 0.25);
+        background-color: #f5f5f5;
+        border-color: #d9d9d9;
+        cursor: not-allowed;
+    }
+    .bgcolor.selection:after {
+        border-left: 6px solid #e0e0e0;
+    }
+    .ant-checkbox-wrapper + .ant-checkbox-wrapper {
+        margin-left: 0;
+    }
+}
+.ul-radio-group .item:first-child {
+    border-radius: 5px 0 0 5px;
+    border-left: 1px solid #ccc;
+}
+.ul-radio-group .item.selection:first-child {
+    border-radius: 5px 0 0 5px;
+    border-left: 1px solid #1890ff;
+}
+.ul-radio-group .item.selection:nth-child(2) {
+    border-left: 1px solid #1890ff;
+}
+.ul-radio-group .item:first-child:after {
+    border-left: 0;
+}
+.ul-radio-group .item:last-child {
+    border-radius: 0px 5px 5px 0px;
+}

+ 330 - 0
src/views/modules/account-config/components/check-more-plat/check-more-plat.vue

@@ -0,0 +1,330 @@
+<style lang="scss">
+.ul-radio-group {
+  border-radius: 5px;
+  height: 32px;
+  padding: 0;
+  margin: 0;
+  border: none;
+  background: transparent;
+
+  .btn {
+    background: transparent;
+    padding: 0;
+    margin: 0;
+    border: none;
+  }
+  .item {
+    min-width: 80px;
+    padding: 0px 15px;
+    text-align: center;
+    display: inline-block;
+    border: 1px solid #ccc;
+    border-left: 0;
+    height: 32px;
+    line-height: 32px;
+    cursor: pointer;
+    .checkbox-button-input {
+      width: 0;
+      height: 0;
+      opacity: 0;
+    }
+    .ant-checkbox {
+      display: none;
+    }
+  }
+  .bgcolor {
+    color: rgba(0, 0, 0, 0.25);
+    background-color: #f5f5f5;
+    border-color: #d9d9d9;
+    cursor: not-allowed;
+  }
+  .item::after {
+    content: '';
+    position: absolute;
+    right: 1px;
+    top: -2px;
+    width: 0;
+    height: 0;
+    border-top: 6px solid transparent;
+    border-bottom: 6px solid transparent;
+    border-left: 6px solid;
+    border-left-color: #e0e0e0;
+    -webkit-transform: rotate(-45deg);
+    -ms-transform: rotate(-45deg);
+    transform: rotate(-45deg);
+    border-radius: 2px;
+  }
+  .item:hover {
+    color: #1890ff;
+  }
+  .selection {
+    color: #fff;
+    background: #1890ff;
+    // border-color: #1890ff;
+  }
+  .item.selection:hover {
+    color: #fff;
+    background: #40a9ff;
+  }
+  .item.selection:after {
+    border-left: 6px solid #1890ff;
+  }
+  .item:hover::after {
+    // border-color: #40a9ff;
+    border-left: 6px solid #40a9ff;
+  }
+  .bgcolor:hover {
+    color: rgba(0, 0, 0, 0.25);
+    background-color: #f5f5f5;
+    border-color: #d9d9d9;
+    cursor: not-allowed;
+  }
+  .bgcolor:hover::after {
+    // border-color: #40a9ff;
+    border-left: 6px solid #e0e0e0;
+  }
+  .bgcolor.selection:after {
+    border-left: 6px solid #e0e0e0;
+  }
+  .bgcolor.selection {
+    color: rgba(0, 0, 0, 0.25);
+    background-color: #f5f5f5;
+    border-color: #d9d9d9;
+    cursor: not-allowed;
+  }
+  .bgcolor.selection:hover {
+    // color: #1890ff;
+    color: rgba(0, 0, 0, 0.25);
+    background-color: #f5f5f5;
+    border-color: #d9d9d9;
+    cursor: not-allowed;
+  }
+  .bgcolor.selection:after {
+    border-left: 6px solid #e0e0e0;
+  }
+  .ant-checkbox-wrapper + .ant-checkbox-wrapper {
+    margin-left: 0;
+  }
+}
+.ul-radio-group .item:first-child {
+  border-radius: 5px 0 0 5px;
+  border-left: 1px solid #ccc;
+}
+.ul-radio-group .item.selection:first-child {
+  border-radius: 5px 0 0 5px;
+  border-left: 1px solid #1890ff;
+}
+.ul-radio-group .item.selection:nth-child(2) {
+  border-left: 1px solid #1890ff;
+}
+.ul-radio-group .item:first-child:after {
+  border-left: 0;
+}
+.ul-radio-group .item:last-child {
+  border-radius: 0px 5px 5px 0px;
+}
+</style>
+<template>
+  <div class="ul-radio-group">
+    <a-checkbox-group v-model="selectedVal" :disabled="disabled" style="width: 100%">
+      <a-checkbox
+        v-for="item of selectOption"
+        :label="item.label"
+        :key="item.value"
+        :value="item.value"
+        :class="{
+          item: true && userButton,
+          selection: selectedVal && selectedVal.indexOf(item.value) > -1 && userButton,
+          bgcolor: item.disabled,
+        }"
+        >{{ item.label }}</a-checkbox
+      >
+    </a-checkbox-group>
+  </div>
+</template>
+<script>
+import {isArray} from '@/utils/Tools';
+import {getAction } from '@/api/manage';
+export default {
+    name: 'check-more-plat', // checkbox组件二次封装
+    props: {
+        userButton: {
+            type: Boolean,
+            default() {
+                return true
+            }
+        },
+        code: {
+            // 参数code
+            type: String,
+            default: ''
+        },
+        allValue: {
+            type: Boolean,
+            default() {
+                return false
+            }
+        },
+        options: {
+            // 外部传入的option 可替代请求项
+            type: Array,
+            default() {
+                return []
+            }
+        },
+        value: {
+            // v-model绑定值
+            type: [Number, Array, String],
+            default() {
+                return []
+            }
+        },
+        label: {
+            // label 绑定值
+            type: [Array, String],
+            default: ''
+        },
+        radioStyle: {
+            // 是否复选框模拟单选效果
+            type: Boolean,
+            default: false
+        },
+        disabled: {
+            // 是否禁用
+            type: Boolean,
+            default: false
+        }
+    },
+    data() {
+        return {
+            selectOption: []
+        }
+    },
+    watch: {
+        options(val) {
+            if (isArray(val)) {
+                this.selectOption.splice(0, this.selectOption.length);
+                this.selectOption.push(...val);
+            }
+        },
+        selectedVal(n, o) {
+            if (this.radioStyle && !this.allValue) {
+                if (n.length == 0) {
+                this.selectedVal = o;
+                }
+            }
+        }
+    },
+    computed: {
+        selectedVal: {
+            get: function () {
+                return this.value;
+            },
+            set: function (val) {
+                this.selectChange(val);
+            }
+        }
+    },
+    mounted() {
+        this.$nextTick(() => {
+            if (this.code && this.options.length == 0) {
+                // 如果code值不为空且options.lengt==0, 则去请求字典项
+                this.getOptions();
+            }
+            else {
+                // 否则直接获取外部传入的options
+                this.selectOption.splice(0, this.selectOption.length);
+                this.selectOption.push(...this.options);
+            }
+        });
+    },
+  methods: {
+    getOptions() {
+        // 获取字典项
+        getAction('/sys/dictItem/list', { dictId: this.code, pageSize: 1000, pageNo: 1 }).then((res) => {
+            if (res.success && isArray(res.result.records)) {
+                var data = res.result.records;
+                data = data.map((item) => {
+                    return {
+                        label: item.itemText,
+                        value: item.itemValue,
+                        ...item
+                    };
+                });
+                if (this.allValue) {
+                    data.unshift({ label: '不检查', value: 'unlimited' });
+                    if (this.value == '' || this.value == '' || this.value == null || this.value.length == 0) {
+                        this.selectedVal = ['unlimited'];
+                    };
+                }
+                else {
+                    if (this.value == '' || this.value == '' || this.value == null || this.value.length == 0) {
+                        this.selectedVal = [];
+                    }
+                }
+                this.selectOption.push(...data);
+            }
+        });
+    },
+    selectChange(val) {
+        // 选择事件
+        if (!this.radioStyle) {
+            // 多选
+            var retrunData = [];
+            let label = this.selectOption.filter((v) => val.findIndex((item) => item == v.value) > -1).map((v) => v.label);
+            if (this.allValue) {
+                if (val.findIndex((item) => item == 'unlimited') == 0) {
+                    retrunData = val.slice(-1);
+                }
+                else if (val.findIndex((item) => item == 'unlimited') == val.length - 1) {
+                    retrunData = ['unlimited'];
+                }
+                else {
+                    retrunData = val;
+                }
+            }
+            else {
+                retrunData = val;
+            }
+            this.$emit('input', retrunData);
+            this.$emit('update:label', label);
+            this.$emit('change', val);
+        }
+        else {
+            // 模拟单选radio效果
+            let selectVal = [];
+            if (this.allValue) {
+                if (val.length == 0) {
+                    selectVal = ['unlimited'];
+                }
+            }
+            else {
+                if (val.length == 0) {
+                    selectVal = [];
+                }
+            }
+            if (val.length > 0) {
+                selectVal = val.slice(-1);
+            }
+            let label = this.selectOption
+            .filter((v) => selectVal.findIndex((item) => item == v.value) > -1)
+            .map((v) => v.label);
+            this.$emit('input', selectVal);
+            this.$emit('update:label', label);
+            this.$emit('change', selectVal);
+        }
+    },
+    emitChange(...args) {
+        // emit change事件
+        this.$emit('change', ...args);
+    },
+    consoleFun(...args) {
+        // 打印信息
+        if (process.env.NODE_ENV == 'development') {
+            console.log(...args);
+        }
+    }
+  }
+}
+</script>
+

+ 61 - 22
src/views/modules/account-config/components/configuration-modal.vue

@@ -128,7 +128,7 @@
                             <span>输入的数量为每天所创建的广告组数量</span>
                             <span>以及每个广告组创建的广告计划数量</span>
                         </template>
-                        <a-icon class="form-itrm-icon" type="smile-o"/>
+                        <a-icon class="form-itrm-icon" type="question-circle"/>
                     </a-tooltip>
                     <div v-if="campaignStatus" style="width: 500px;color: #f00;">单账号每天创建计划上限500个</div>
                 </a-form-model-item>
@@ -277,8 +277,8 @@
                 </div>
             </div>
             <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>
                         <a-form-model-item label="地域">
                             <a-radio-group v-model="configForm.adDistrict" button-style="solid">
@@ -397,6 +397,12 @@
                             </a-radio-group>
                         </a-form-model-item>
                         <a-form-model-item label="平台">
+                            <!-- <check-more-plat
+                                v-model="configForm.adPlatform"
+                                :options="adPlatformOption"
+                                @change="getAgeSelect"
+                            >
+                            </check-more-plat> -->
                             <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="IOS" :disabled="platformLoadingType === 'APP_ANDROID'">IOS</a-radio-button>
@@ -405,7 +411,12 @@
                             </a-radio-group>
                         </a-form-model-item>
                         <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 v-if="configForm.adDownloadUrl" label="安卓版本">
                             <a-radio-group v-model="configForm.adAndroidVersion" button-style="solid" @change="handleAndroidVersion">
@@ -459,11 +470,11 @@
                                 <template slot="title">
                                     <span>对已转化过的用户避免再次投放的时间</span>
                                 </template>
-                                <a-icon class="form-itrm-icon" style="left: -90px;" type="smile-o"/>
+                                <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">
+                            <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>
@@ -471,7 +482,7 @@
                                 <template slot="title">
                                     <span>智能放量可以帮您逐步探索已选定向人群之外的目标人群,提升跑量。已选择定向建议放开</span>
                                 </template>
-                                <a-icon class="form-itrm-icon" style="left: -90px;" type="smile-o"/>
+                                <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%;">
@@ -483,8 +494,8 @@
                             </auto-select> 
                         </div>
                     </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
                                 class="common-input-long"
                                 v-model="configForm.adAudiencePackageId"
@@ -508,7 +519,7 @@
                                 <template slot="title">
                                     <span>已有定向包只展示当前推广目的和投放范围下,定向功能升级后仍可用的定向包</span>
                                 </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-form-model-item>
                         <span v-if="selectOrientPlaceholder !== 'able'" style="color: #f00; margin-left: 198px;">{{ selectOrientPlaceholder }}</span>
@@ -914,6 +925,7 @@ import radioCheck from '@/components/formComponents/checkBoxGroup';
 import linkMultiSelect from '@/views/modules/BatchCreate/linkMultiSelect';
 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 BMF from 'browser-md5-file';
@@ -945,7 +957,8 @@ export default {
         radioCheck,
         linkMultiSelect,
         DirectionalLogic,
-        AutoSelect
+        AutoSelect,
+        CheckMorePlat
     },
     data() {
         let handleConfirmValue = (rule, value, callback) => {
@@ -996,6 +1009,24 @@ export default {
             subTitleMsgStatus: false,
             subTitleMsg: '',
             AutoExtendEditSelect: [],
+            adPlatformOption: [
+                {
+                    value: 'NONE',
+                    label: '不限'
+                },
+                {
+                    value: 'IOS',
+                    label: 'IOS'
+                },
+                {
+                    value: 'ANDROID',
+                    label: 'ANDROID'
+                },
+                {
+                    value: 'PC',
+                    label: 'PC'
+                }
+            ],
             adAutoExtendList: [
                 {
                     value: 'AGE',
@@ -1020,7 +1051,6 @@ export default {
             ],
             directionalData: [],
             platformLoadingType: '',
-            selectPackageTabs: '1',
             deviceTypeList: [
                 {
                     value: 'NONE',
@@ -1095,7 +1125,7 @@ export default {
             regionCityListUrl: 'ctop/bytedanceAreaInfo/list',
             defaultAdBudget: '',
             adBudgetShowTitle: false,
-            adBudgetNum: 1,
+            adBudgetNum: 300,
             campaignStatus: false,
             detailData: {},
             modalTitle: '',
@@ -1217,6 +1247,7 @@ export default {
                 creativeThirdIndustryIds: [{required: true, message: '请选择', trigger: 'change'}]
             },
             configForm: {
+                adDirectionalFlag: 'add',
                 adInterestActionMode: 'UNLIMITED',
                 creativeDisplayMode: 'CREATIVE_DISPLAY_MODE_CTR',
                 creativeAppName: '',
@@ -1245,7 +1276,7 @@ export default {
                 productSellingPoints: [], // 商品买点
                 adBudgetMode: 'BUDGET_MODE_DAY', // 预算类型
                 adDownloadUrl: '', // 下载链接
-                accountBudget: 1000, // 账户日预算
+                accountBudget: 0, // 账户日预算
                 accountId: undefined, // 账户
                 dpLinkStartIndex: 1,
                 dpLinkEndIndex: 2,
@@ -1282,7 +1313,7 @@ export default {
                 adAndroidVersion: 'NONE', // 定向-安卓版本
                 androidChangeValue: '', // 安卓版本-自定义
                 adSmartBidType: 'SMART_BID_CUSTOM', // 投放场景
-                adBudget: 1, // 预算
+                adBudget: 300, // 预算
                 adScheduleType: 'SCHEDULE_FROM_NOW', // 投放时间
                 launchDateRange: [], // 设置开始和结束时间
                 launchTimeInterval: 'buxian', // 投放时段
@@ -1419,6 +1450,13 @@ export default {
     methods: {
         ...mapGetters(['nickname', 'avatar', 'userInfo']),
         moment,
+        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])/;
@@ -1846,7 +1884,6 @@ export default {
                         const detailData = result.result;
                         this.configForm.accountId = detailData.accountId;
                         if (detailData.adAudiencePackageId) {
-                            this.selectPackageTabs = '2';
                             getAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/getAdAudiencePackage', {accountId: detailData.accountId})
                                 .then(result => {
                                     if (result.code === 0) {
@@ -1862,13 +1899,11 @@ export default {
                                     console.log(error, 'eeee');
                                 });
                         }
-                        else {
-                            this.selectPackageTabs = '1';
-                        }
                         this.configForm.dpLinkStartIndex = detailData.dpLinkStartIndex;
                         this.configForm.dpLinkEndIndex = detailData.dpLinkEndIndex;
                         this.configForm.accountBudgetMode = detailData.accountBudgetMode;
                         this.configForm.accountBudget = detailData.accountBudget;
+                        this.configForm.adDirectionalFlag = detailData.adDirectionalFlag;
                         this.configForm.campaignLandingType = detailData.campaignLandingType;
                         this.configForm.advertisingType = detailData.advertisingType || '1';
                         this.configForm.campaignName = detailData.campaignName || '';
@@ -1939,7 +1974,7 @@ export default {
                                     item.key = item.custom_audience_id;
                                 });
                                 this.directionalData = result.result;
-                                this.configForm.adRetargetingTagsType = detailData.adRetargetingTagsType || '1';
+                                this.configForm.adRetargetingTagsType = detailData.adRetargetingTagsType;
                                 if (detailData.adRetargetingTagsType === '3') {
                                     this.configForm.customPerson = 'a';
                                     this.configForm.adRetargetingTagsInclude = detailData.adRetargetingTagsInclude;
@@ -2161,7 +2196,7 @@ export default {
             }
             else if (e === 'BUDGET_MODE_DAY') {
                 this.adBudgetNum = 0;
-                this.configForm.adBudget = 0;
+                this.configForm.adBudget = 300;
             }
         },
         handleDelOrigin(list) {
@@ -2320,7 +2355,7 @@ export default {
                     return;
                 }
             }
-            if (this.selectPackageTabs === '2' && !this.configForm.adAudiencePackageId) {
+            if (this.configForm.adDirectionalFlag === 'choice' && !this.configForm.adAudiencePackageId) {
                 this.$message.error('请选择已有定向包');
                 return;
             }
@@ -2338,6 +2373,10 @@ export default {
                     return;
                 }
             }
+            if (paramsFormData.adAutoExtendEnabled === '1' && !paramsFormData.adAutoExtendTargets) {
+                this.$message.error('请选择可开放定向');
+                return;
+            }
             if (this.configForm.adScheduleType === 'SCHEDULE_START_END' && !this.configForm.launchDateRange.length) {
                 this.$message.error('请选择投放时间');
                 return;

+ 16 - 4
src/views/modules/creative-copywrit/creative-copywrit.vue

@@ -1476,7 +1476,8 @@
                     <div class="acount-title-left">创意标题</div>
                     <div class="acount-title-right">
                         <a-button type="primary" @click="handleAddOrigin"><a-icon type="plus" />创意标题</a-button>
-                        <a-button class="examin-select-title" @click="handleSelectTitle">选标题</a-button>
+                        <!-- TODO 暂时功能隐藏 -->
+                        <!-- <a-button class="examin-select-title" @click="handleSelectTitle">选标题</a-button> -->
                         <span>已填:{{ titleFiledResult.length || 0 }}</span>
                     </div>
                 </div>
@@ -1559,7 +1560,8 @@
                     <div class="acount-title-left">创意标题</div>
                     <div class="acount-title-right">
                         <a-button type="primary" @click="handleAddOrigin"><a-icon type="plus" />创意标题</a-button>
-                        <a-button class="examin-select-title" @click="handleSelectTitle">选标题</a-button>
+                        <!-- TODO 暂时功能隐藏 -->
+                        <!-- <a-button class="examin-select-title" @click="handleSelectTitle">选标题</a-button> -->
                         <span>已填:{{ titleFiledResult.length || 0 }}</span>
                     </div>
                 </div>
@@ -2071,11 +2073,16 @@ export default {
                 this.$message.error('请至少输入3条标题');
                 return;
             }
+            let changeSlogan = this.defaultFormList;
+            changeSlogan.forEach(item => {
+                item.title = item.value;
+                item.creative_word_ids = [];
+            });
             let params = {
                 ids: this.modalShowBatchList.map(item => item.id) || [],
                 auditorId: this.userInfo().id,
                 status: 1,
-                slogans: this.defaultFormList.map(item => item.value) || []
+                slogans: changeSlogan
             };
             this.examinForm.validateFields(err => {
                 if (!err) {
@@ -2359,11 +2366,16 @@ export default {
                 this.$message.error('请至少输入3条标题');
                 return;
             }
+            let changeSlogan = this.defaultFormList;
+            changeSlogan.forEach(item => {
+                item.title = item.value;
+                item.creative_word_ids = [];
+            });
             let params = {
                 id: this.currentPageOnlyList.id,
                 auditorId: this.userInfo().id,
                 status: 1,
-                slogans: this.defaultFormList.map(item => item.value) || []
+                slogans: changeSlogan
             };
             this.examinForm.validateFields(err => {
                 if (!err) {