فهرست منبع

Merge remote-tracking branch 'origin/master'

xuzuoyun 5 سال پیش
والد
کامیت
4933274a96

+ 3 - 18
src/views/template/advertiseplan/list.vue

@@ -141,29 +141,14 @@
             }
           },
           {
-            title: '广告组模板id',
+            title: '模板名称',
             align: "center",
-            dataIndex: 'campaignTemplateId'
+            dataIndex: 'name'
           },
           {
             title: '投放范围',
             align: "center",
-            dataIndex: 'deliveryRange'
-          },
-          {
-            title: '用户定向模板id',
-            align: "center",
-            dataIndex: 'userOrentationTemplateId'
-          },
-          {
-            title: '预算与出价模板id',
-            align: "center",
-            dataIndex: 'budgetTemplateId'
-          },
-          {
-            title: '投放目标模板id',
-            align: "center",
-            dataIndex: 'deliveryTargetTemplateId'
+            dataIndex: 'deliveryRange_dictText'
           },
           {
             title: '模板状态',

+ 4 - 24
src/views/template/advertiseplan/modules/BytedanceAdvertisePlanTemplateModal.vue

@@ -11,25 +11,6 @@
         <a-spin :spinning="confirmLoading">
           <a-form @submit="handleSubmit" :form="form">
             <a-form-item
-              label="选择头条账户"
-              :labelCol="{lg: {span: 7}, sm: {span: 7}}"
-              :wrapperCol="{lg: {span: 15}, sm: {span: 17} }">
-              <a-select
-                v-model="accountId"
-                showSearch
-                placeholder="选择头条账户"
-                optionFilterProp="children"
-                style="width: 200px"
-                @focus="handleFocus"
-                @blur="handleBlur"
-                @change="accountHandleChange"
-                :filterOption="filterOption"
-              >
-                <a-select-option v-for="user in userList" :key="user.accountId" :value="user.accountId">{{user.advertiserName}}</a-select-option>
-              </a-select>
-            </a-form-item>
-
-            <a-form-item
               label="选择广告组模板"
               :labelCol="{lg: {span: 7}, sm: {span: 7}}"
               :wrapperCol="{lg: {span: 15}, sm: {span: 17} }">
@@ -44,7 +25,7 @@
                 @change="handleChange"
                 :filterOption="filterOption"
               >
-                <a-select-option v-for="campaign in campaignList" :key="campaign.id" :value="campaign.id">{{campaign.name}}</a-select-option>
+                <a-select-option v-for="campaign in campaignList" :key="campaign.id" :value="campaign.id">{{campaign.campaignName}}</a-select-option>
               </a-select>
             </a-form-item>
 
@@ -139,7 +120,6 @@
               headers: {
                 authorization: 'authorization-text',
               },
-              accountId:'0',
               templateName:'',
               loading: false,
               campaignList: {},
@@ -147,8 +127,8 @@
               userList:{},
               userorentationList:{},
               budgetList:{},
-              deliveryRange:'default',
-              campaignId:0,
+              deliveryRange:'DEFAULT',
+              campaignId:null,
               deliverytargetId:null,
               budgetId:null,
               userorentationId:null,
@@ -171,7 +151,7 @@
                     add: "/ctop/bytedanceAdvertisePlanTemplate/add",
                     edit: "/ctop/bytedanceAdvertisePlanTemplate/edit",
                     dictListUrl: 'toutiao/dictitem/list',
-                    campaignListUrl:'/template/campaign/data/list',
+                    campaignListUrl:'/template/campaign/list',
                     budgetTemplateListUrl:'/template/budget/list',
                     deliverytargetTemplateListUrl:'/template/deliverytarget/list',
                     userorentationTemplateListUrl:'/template/userorentation/list',

+ 0 - 26
src/views/template/budget/modules/ByteDanceBudgetTemplateModal.vue

@@ -151,18 +151,6 @@
             xs: {span: 24},
             sm: {span: 16},
           },
-          // validatorRules: {
-          //   name: {rules: [{required: true, message: '请输入模板名称!'}]},
-          //   convertPrice: {rules: []},
-          //   priceType: {rules: []},
-          //   dateQuantum: {rules: []},
-          //   flowDateType: {rules: []},
-          //   budgetPrice:{rules:[]},
-          //   budgetPriceMode: {rules: []},
-          //   flowControlMode: {rules: []},
-          //   bidType: {rules: []},
-          //   time:{rules:[]}
-          // },
           name:'',
           confirmLoading: false,
           convertPrice: 0,
@@ -245,10 +233,6 @@
               load_time_table('table_time_selected1',dateQuantumRangeConst);
             });
           }
-          // this.$nextTick(() => {
-          //   this.form.setFieldsValue(pick(this.model, 'name', 'convertPrice', 'priceType', 'dateQuantum', 'flowDateType', 'budgetPriceMode', 'flowControlMode', 'bidType','budgetPrice','startDate','endDate'))
-          //   //时间格式化
-          // });
         },
         close() {
           this.$emit('close');
@@ -351,16 +335,6 @@
           }
         });
 
-        // //付费方式类型
-        // params = {};
-        // params.dictId = '46e24e805d5cd0356a9f4560d987a276';
-        // params.pageSize = '1000';
-        // getAction(this.url.dictListUrl,params).then((res) => {
-        //   if (res.success) {
-        //     this.flowControlModeList = res.result.records
-        //   }
-        // });
-
         //过滤已转化用户
         params = {};
         params.dictId = 'd06027ca9be05d60b2946e5276fa1cba';

+ 1 - 1
src/views/template/campaign/list.vue

@@ -114,7 +114,7 @@
           {
             title: '推广目的',
             align: "center",
-            dataIndex: 'promotionPurpuse_dictText'
+            dataIndex: 'promotionPurpose_dictText'
           },
           {
             title: '预算类型',

+ 65 - 16
src/views/template/campaign/modules/ByteDanceCampaignTemplateModal.vue

@@ -13,11 +13,9 @@
         label="推广目的"
         :labelCol="labelCol"
         :wrapperCol="wrapperCol">
-        <a-radio-group @change="promotionPurposeChange" v-model="promotionPurpose">
-          <a-radio-button v-for="purpose in promotionPurposeList" :key="purpose.itemText" :value="purpose.itemValue">
-            {{purpose.itemText}}
-          </a-radio-button>
-        </a-radio-group>
+        <a-select v-model="promotionPurpose"  style="width: 300px" @change="promotionPurposeChange">
+          <a-select-option v-for="purpose in promotionPurposeList" :key="purpose.itemText" :value="purpose.itemValue">{{purpose.itemText}}</a-select-option>
+        </a-select>
       </a-form-item>
 
       <a-form-item
@@ -61,6 +59,7 @@
     name: 'ByteDanceCampaignTemplateModal',
     data() {
       return {
+        id:null,
         confirmLoading: false,
         title: "操作",
         visible: false,
@@ -68,8 +67,8 @@
         promotionPurpose:'APP',
         promotionPurposeList: {},
         showBudgetDaily:false,
-        campaignName:'APP_'+moment(new Date()),
-        campaignBudget:'UNLIMITED',
+        campaignName:'应用推广_'+moment(new Date()),
+        campaignBudget:'BUDGET_MODE_INFINITE',
         budgetDaily:0,
         labelCol: {
           xs: {span: 24},
@@ -88,17 +87,34 @@
     },
     methods: {
       add() {
-        this.edit({});
+        this.edit({
+          id:null,
+          confirmLoading: false,
+          title: "操作",
+          visible: false,
+          promotionPurpose:'APP',
+          promotionPurposeList: {},
+          showBudgetDaily:false,
+          campaignName:'应用推广_'+moment(new Date()),
+          campaignBudget:'BUDGET_MODE_INFINITE',
+          budgetDaily:0
+        });
       },
       edit(record) {
         this.form.resetFields();
         this.model = Object.assign({}, record);
         this.visible = true;
-        // this.$nextTick(() => {
-        //   this.form.setFieldsValue(pick(this.model, 'name', 'industryId', 'contact', 'mobile', 'email'))
-        //   //时间格式化
-        // });
-
+        this.id=record.id;
+        this.name=record.name;
+        this.promotionPurpose = record.promotionPurpose;
+        this.campaignBudget = record.campaignBudget;
+        this.budgetDaily = record.budgetDaily;
+        this.campaignName = record.campaignName;
+        if(this.campaignBudget == 'BUDGET_MODE_INFINITE'){
+          this.showBudgetDaily = false;
+        }else{
+          this.showBudgetDaily = true;
+        }
       },
       close() {
         this.$emit('close');
@@ -110,6 +126,7 @@
           if (!err) {
             console.log('Received values of form: ', values);
             let params = {};
+            params.id = this.id;
             params.promotionPurpose = this.promotionPurpose;
             params.campaignBudget = this.campaignBudget;
             params.budgetDaily = this.budgetDaily;
@@ -118,7 +135,15 @@
             postAction(this.url.insertTemplateUrl,params).then((res)=>{
               console.log(res)
               if(res.success){
-                alert("广告组模板创建成功");
+                if(null!=this.id){
+                  this.$message.success("广告组模板修改成功");
+                }else{
+                  this.$message.success("广告组模板创建成功");
+                }
+                this.$emit('ok');
+                this.close();
+              }else{
+                this.$message.error(res.message);
               }
             });
           }
@@ -137,8 +162,32 @@
       handleCancel() {
         this.close()
       },
-      promotionPurposeChange(){
-        this.campaignName = this.promotionPurpose +'_'+moment(new Date());
+      promotionPurposeChange(value){
+        console.log(value);
+        if(this.promotionPurpose == 'APP'){
+          this.campaignName = '应用推广_'+moment(new Date());
+        }
+        if(this.promotionPurpose == 'LINK'){
+          this.campaignName = '销售线索收集_'+moment(new Date());
+        }
+        if(this.promotionPurpose == 'DPA'){
+          this.campaignName = '产品目录推广_'+moment(new Date());
+        }
+        if(this.promotionPurpose == 'LINK'){
+          this.campaignName = '销售线索收集_'+moment(new Date());
+        }
+        if(this.promotionPurpose == 'GOODS'){
+          this.campaignName = '商品推广_'+moment(new Date());
+        }
+        if(this.promotionPurpose == 'STORE'){
+          this.campaignName = '门店推广_'+moment(new Date());
+        }
+        if(this.promotionPurpose == 'AWEME'){
+          this.campaignName = '抖音号推广_'+moment(new Date());
+        }
+        if(this.promotionPurpose == 'SHOP'){
+          this.campaignName = '电商店铺推广_'+moment(new Date());
+        }
       }
     },
     created: function () {

+ 14 - 10
src/views/template/creative/create.vue

@@ -34,15 +34,6 @@
       </a-form-item>
 
       <a-form-item
-        label="投放范围"
-        :labelCol="{lg: {span: 7}, sm: {span: 7}}"
-        :wrapperCol="{lg: {span: 15}, sm: {span: 17} }">
-        <a-radio-group v-model="deliveryRange">
-          <a-radio-button value="DEFAULT">默认</a-radio-button>
-          <a-radio-button value="UNION">穿山甲</a-radio-button>
-        </a-radio-group>
-      </a-form-item>
-      <a-form-item
         label="选择用户定向模板"
         :labelCol="{lg: {span: 7}, sm: {span: 7}}"
         :wrapperCol="{lg: {span: 15}, sm: {span: 17} }">
@@ -92,6 +83,13 @@
       </a-form-item>
 
       <a-form-item
+        label="广告创意名称"
+        :labelCol="{lg: {span: 7}, sm: {span: 7}}"
+        :wrapperCol="{lg: {span: 15}, sm: {span: 17} }">
+        <a-input v-model="name"></a-input>
+      </a-form-item>
+
+      <a-form-item
         label="广告位置"
         :labelCol="{lg: {span: 7}, sm: {span: 7}}"
         :wrapperCol="{lg: {span: 15}, sm: {span: 17} }">
@@ -401,6 +399,7 @@
   import UploadToAli from '@femessage/upload-to-ali';
   import {postAction, getAction} from '@/api/manage';
   import moment from 'moment';
+  import AFormItem from "ant-design-vue/es/form/FormItem";
 
   export default {
     name: 'BaseForm',
@@ -411,7 +410,7 @@
         userList:{},
         userorentationList:{},
         budgetList:{},
-        deliveryRange:'default',
+        deliveryRange:'DEFAULT',
         campaignId:null,
         deliverytargetId:null,
         budgetId:null,
@@ -460,6 +459,7 @@
         materialType:'CREATIVE_IMAGE_MODE_LARGE',
         webUrl:'',
         appName:'',
+        name:'',
         advancedCreativeTitle:'',
         isCommentDisable:'1',
         creativeDisplayMode:'CREATIVE_DISPLAY_MODE_CTR',
@@ -480,6 +480,7 @@
       }
     },
     components:{
+      AFormItem,
       UploadToAli
     },
     methods: {
@@ -595,6 +596,7 @@
             params.creativeDisplayMode=this.creativeDisplayMode;
             params.adCategory=this.adCategory;
             params.adKeywords=this.adKeywords;
+            params.name = this.name;
             params.iteratorNum = this.iteratorNum;
 
             console.log(params)
@@ -602,6 +604,8 @@
               console.log(res)
               if(res.success){
                 alert("预算模板创建成功");
+              }else{
+                alert(res.message);
               }
             });
 

+ 2 - 2
src/views/template/deliverytarget/list.vue

@@ -103,12 +103,12 @@
           {
             title: '投放目标',
             align:"center",
-            dataIndex: 'deliveryTarget'
+            dataIndex: 'deliveryTarget_dictText'
           },
           {
             title: '下载方式',
             align:"center",
-            dataIndex: 'downloadType'
+            dataIndex: 'downloadType_dictText'
           },
           {
             title: '下载链接',

+ 89 - 16
src/views/template/deliverytarget/modules/BytedanceDeliveryTargetTemplateModal.vue

@@ -10,14 +10,25 @@
     
     <a-spin :spinning="confirmLoading">
       <a-form :form="form">
+
+        <a-form-item
+          label="投放范围"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol">
+          <a-radio-group v-model="deliveryRange">
+            <a-radio-button value="DEFAULT">默认</a-radio-button>
+            <a-radio-button value="UNION">穿山甲</a-radio-button>
+          </a-radio-group>
+        </a-form-item>
+
         <a-form-item
           label="投放目标"
           :labelCol="labelCol"
           :wrapperCol="wrapperCol">
           <a-radio-group @change="onChangeDeliveryTarget" v-model="deliveryTarget">
-            <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-button value="CONVERSION">转化量</a-radio-button>
+            <a-radio-button value="CLICK">点击量</a-radio-button>
+            <a-radio-button value="VIEW">展示量</a-radio-button>
           </a-radio-group>
         </a-form-item>
 
@@ -95,7 +106,7 @@
           label="模板名称"
           :labelCol="labelCol"
           :wrapperCol="wrapperCol">
-          <a-input v-model="templateName"></a-input>
+          <a-input v-model="name"></a-input>
         </a-form-item>
       </a-form>
     </a-spin>
@@ -121,10 +132,12 @@
           xs: { span: 24 },
           sm: { span: 16 },
         },
-        templateName:'',
-        confirmLoading: false,
         form: this.$form.createForm(this),
-        deliveryTarget:'a',
+        id:null,
+        name:'',
+        confirmLoading: false,
+        deliveryRange:'DEFAULT',
+        deliveryTarget:'CONVERSION',
         packageName:'',
         downloadType:'DOWNLOAD_URL',
         downloadUrl:'',
@@ -152,17 +165,68 @@
         this.close()
       },
       add () {
-        this.edit({});
+        this.edit({
+          id:null,
+          name:'',
+          confirmLoading: false,
+          deliveryRange:'DEFAULT',
+          deliveryTarget:'CONVERSION',
+          packageName:'',
+          downloadType:'DOWNLOAD_URL',
+          downloadUrl:'',
+          externalUrl:'',
+          convertTarget:'',
+          showDownloadUrl:true,
+          showExternalUrl:false,
+          showConvertTarget:true,
+          showPackageName:true,
+          showOpenUrlStatus:false,
+          openUrlStatus:'disabled',
+          redirectUrl:'',
+          showToAppUrl:false,
+          showOpenUrlCreateMode:false,
+          openUrlCreateMode:'hand_create'
+        });
       },
       edit (record) {
         this.form.resetFields();
         this.model = Object.assign({}, record);
         this.visible = true;
-        this.$nextTick(() => {
-          this.form.setFieldsValue(pick(this.model,'name','deliveryTarget','downloadType','downloadUrl','externalUrl','convertTarget','packageName','openUrlStatus','openUrlCreateMode','redirectUrl','status'))
-          //时间格式化
-        });
-
+        this.id = record.id;
+        this.deliveryTarget = record.deliveryTarget;
+        this.downloadType = record.downloadType;
+        this.downloadUrl = record.downloadUrl;
+        this.externalUrl = record.externalUrl;
+        this.convertTarget = record.convertTarget;
+        this.packageName = record.packageName;
+        this.openUrlStatus = record.openUrlStatus;
+        this.openUrlCreateMode = record.openUrlCreateMode;
+        this.redirectUrl = record.redirectUrl;
+        this.name = record.name;
+        this.deliveryRange = record.deliveryRange;
+        if(this.downloadType == 'DOWNLOAD_URL'){
+          this.showDownloadUrl = true;
+          this.showExternalUrl = false;
+          this.showPackageName=true;
+          this.showOpenUrlStatus=false;
+        }else{
+          this.showDownloadUrl = false;
+          this.showExternalUrl = true;
+          this.showPackageName=false;
+          this.showOpenUrlStatus=true;
+        }
+        if(this.deliveryTarget == 'a'){
+          this.showConvertTarget = true;
+        }else {
+          this.showConvertTarget = false;
+        }
+        if(this.openUrlStatus=='disabled'){
+          this.showOpenUrlCreateMode = false;
+          this.showToAppUrl = false;
+        }else{
+          this.showOpenUrlCreateMode = true;
+          this.showToAppUrl = true;
+        }
       },
       close () {
         this.$emit('close');
@@ -174,6 +238,7 @@
           if (!err) {
             console.log('Received values of form: ', values);
             let params = {};
+            params.id = this.id;
             params.deliveryTarget = this.deliveryTarget;
             params.downloadType = this.downloadType;
             params.downloadUrl = this.downloadUrl;
@@ -183,12 +248,21 @@
             params.openUrlStatus = this.openUrlStatus;
             params.openUrlCreateMode = this.openUrlCreateMode;
             params.redirectUrl = this.redirectUrl;
-            params.name = this.templateName;
+            params.name = this.name;
+            params.deliveryRange = this.deliveryRange;
             console.log(params)
             postAction(this.url.insertUrl,params).then((res)=>{
               console.log(res)
               if(res.success){
-                alert("投放目标-模板创建成功");
+                if(null == this.id){
+                  this.$message.success("投放目标模板创建成功");
+                }else {
+                  this.$message.success("投放目标模板修改成功");
+                }
+                this.$emit('ok');
+                this.close();
+              }else{
+                this.$message.error(res.message);
               }
             });
           }
@@ -204,7 +278,6 @@
           this.showExternalUrl = false;
           this.showPackageName=true;
           this.showOpenUrlStatus=false;
-
         }else{
           this.showDownloadUrl = false;
           this.showExternalUrl = true;