Quellcode durchsuchen

修改内广批量界面

syh vor 5 Jahren
Ursprung
Commit
2695971336

+ 2 - 1
package.json

@@ -28,7 +28,7 @@
     "lodash.pick": "^4.4.0",
     "md5": "^2.2.1",
     "nprogress": "^0.2.0",
-    "promise.prototype.finally": "^3.1.0",
+    "promise.prototype.finally": "^3.1.1",
     "tinymce": "^5.0.2",
     "viser-vue": "^2.4.4",
     "vue": "^2.6.10",
@@ -41,6 +41,7 @@
     "vue-ls": "^3.2.0",
     "vue-oss-uploader": "^0.1.10",
     "vue-photo-preview": "^1.1.3",
+    "vue-preview": "^1.1.3",
     "vue-print-nb-jeecg": "^1.0.8",
     "vue-property-decorator": "^7.3.0",
     "vue-router": "^3.0.1",

+ 151 - 29
src/views/modules/bytedance/model/InternalModel.vue

@@ -2,6 +2,21 @@
   <a-card :body-style="{padding: '24px 32px'}" :bordered="false">
     <a-form @submit="handleSubmit" :form="form">
       <a-form-item
+          label="选择头条账户"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol">
+          <a-select
+            v-model="accountId"
+            showSearch
+            placeholder="选择头条账户"
+            optionFilterProp="children"
+            style="width: 200px"
+          >
+            <a-select-option v-for="user in userList" :key="user.accountId" :value="user.accountId">{{user.authName}}</a-select-option>
+          </a-select>
+      </a-form-item>
+
+      <a-form-item
         label="模板名称"
         :labelCol="labelCol"
         :wrapperCol="wrapperCol">
@@ -51,14 +66,6 @@
       </a-form-item>
 
       <a-form-item
-        v-if="showConvertTarget"
-        label="转化目标"
-        :labelCol="labelCol"
-        :wrapperCol="wrapperCol">
-        <a-input placeholder="请输入网址或从之前网站选择" v-model="convertTarget"/>
-      </a-form-item>
-
-      <a-form-item
         label="下载方式"
         :labelCol="labelCol"
         :wrapperCol="wrapperCol">
@@ -67,35 +74,82 @@
           <a-radio-button value="1">下载链接</a-radio-button>
           <a-radio-button value="2">落地页</a-radio-button>
         </a-radio-group>
+      </a-form-item>
 
+      <a-form-item
+        v-if="showDownloadMode"
+        label="下载类型"
+        :labelCol="labelCol"
+        :wrapperCol="wrapperCol">
+        <a-radio-group @change="onChangeDownloadMode" v-model="downloadMode">
+          <a-radio-button value="android">安卓下载</a-radio-button>
+          <a-radio-button value="IOS">IOS下载</a-radio-button>
+        </a-radio-group>
       </a-form-item>
 
       <a-form-item
         label="下载链接"
-        v-if="showDownloadUrl"
         :labelCol="labelCol"
         :wrapperCol="wrapperCol">
-        <a-input placeholder="请填写下载链接" v-model="downloadUrl"/>
+        <a-select
+          v-model="urlId"
+          style="width: 300px">
+          <a-select-option v-for="url in urlList" :key="url.id" :value="url.id">{{url.name}}</a-select-option>
+        </a-select>
       </a-form-item>
 
       <a-form-item
-        v-if="showExternalUrl"
-        label="链接地址"
+        v-if="showConvertTarget"
+        label="选择转化跟踪方式"
         :labelCol="labelCol"
         :wrapperCol="wrapperCol">
-        <a-input placeholder="请输入网址或从之前网站选择" v-model="externalUrl"/>
+        <a-select
+          v-model="convertType"
+          showSearch
+          placeholder="选择投放目标模板"
+          optionFilterProp="children"
+          style="width: 200px"
+          @change="changeConvertType"
+        >
+          <a-select-option v-if="showSimple"value="SIMPLE">普通应用下载</a-select-option>
+          <!--<a-select-option value="API">应用下载API</a-select-option>-->
+        </a-select>
       </a-form-item>
 
-
       <a-form-item
-        label="应用包名"
-        v-if="showPackageName"
+        v-if="showConvertTarget&&showConvertTargetSimple"
+        label="选择转化目标"
         :labelCol="labelCol"
         :wrapperCol="wrapperCol">
-        <a-input v-model="packageName"></a-input>
+        <a-select
+          v-model="simpleDeliverytarget"
+          showSearch
+          placeholder="选择转化目标"
+          optionFilterProp="children"
+          style="width: 200px"
+        >
+          <a-select-option value="AD_CONVERT_TYPE_INSTALL_FINISH">安装完成</a-select-option>
+          <a-select-option value="AD_CONVERT_TYPE_DOWNLOAD_FINiSH">下载完成</a-select-option>
+        </a-select>
       </a-form-item>
 
       <a-form-item
+        v-if="showConvertTarget&&showConvertTargetApi"
+        label="选择转化目标"
+        :labelCol="labelCol"
+        :wrapperCol="wrapperCol">
+        <a-select
+          v-model="convertId"
+          showSearch
+          placeholder="选择转化目标"
+          optionFilterProp="children"
+          style="width: 800px"
+        >
+          <a-select-option v-for="activeConvert in activeConvertList" :key="activeConvert.id" :value="activeConvert.id">{{activeConvert.name}}</a-select-option>
+        </a-select>
+      </a-form-item>
+
+      <!--<a-form-item
         label="直达链接"
         v-if="showOpenUrlStatus"
         :labelCol="labelCol"
@@ -104,7 +158,7 @@
           <a-radio-button value="disabled">不启用</a-radio-button>
           <a-radio-button value="enabled">启用</a-radio-button>
         </a-radio-group>
-      </a-form-item>
+      </a-form-item>-->
 
 <!--      <a-form-item-->
 <!--        label="直达链接生成方式"-->
@@ -219,6 +273,13 @@
       </a-form-item>
 
+      <a-form-item
+        label="迭代数量"
+        :labelCol="labelCol"
+        :wrapperCol="wrapperCol">
+        <a-input-number v-model="itratorNum" :min="1" :max="1000" @change="onChange"/>
+      </a-form-item>
+
 
       <a-form-item :wrapperCol="{ span: 24 }"
                    style="text-align: center">
@@ -255,7 +316,21 @@
           xs: {span: 24},
           sm: {span: 16},
         },
-
+        itratorNum:1,
+        accountId:'',
+        userList:[],
+        urlId:'',
+        urlList:[],
+        showDownloadMode:'true',
+        downloadMode:'android',
+        convertId:'',
+        showSimple:true,
+        showConvertTargetSimple:false,
+        showConvertTargetApi:false,
+        convertType:'',
+        simpleDeliverytarget:'',
+        activeConvertList:[],
+        deliverytargetId:null,
         templateName: '', //模板名称
         deliveryRange: '1',//投放范围
         deliveryForm: '1',//投放形式
@@ -280,9 +355,7 @@
         convertPrice: 0, //目标转化出价
         convertTarget: '',
         showDownloadUrl: true,
-        showExternalUrl: false,
         showConvertTarget: true,
-        showPackageName: true,
         showOpenUrlStatus: false,
         openUrlStatus: 'disabled',
         redirectUrl: '',
@@ -298,12 +371,46 @@
         flowDateList: {},
         form: this.$form.createForm(this),
         url: {
+          urllist: '/ctop/bytedanceUrlInfo/list',
+          userAllocationList:'/template/allocation/list',
           dictListUrl: 'toutiao/dictitem/list',
-          insertUrl: 'test/create'
+          insertUrl: 'test/create',
+          convertList:'template/convert/list/url'
         }
       }
     },
     methods: {
+      refreshConvertApiId(){
+        let params = {};
+        getAction(this.url.convertList+'?accountId='+this.accountId+'&urlId='+this.urlId ,params).then((res)=>{
+          console.log(res);
+          if(res.code == 0){
+            this.activeConvertList = res.data.active_convert_list;
+          }else{
+            this.$message.error(res.message);
+          }
+        });
+      },
+      changeConvertType(){
+        if(this.convertType == 'SIMPLE'){
+          this.showConvertTargetSimple = true;
+          this.showConvertTargetApi = false;
+        }else{
+          this.refreshConvertApiId();
+          this.showConvertTargetSimple = false;
+          this.showConvertTargetApi = true;
+        }
+      },
+      refreshUrl(value){
+        let params = {};
+        params.pageSize = '1000';
+        params.type = value;
+        getAction(this.url.urllist, params).then((res) => {
+          if (res.success) {
+            this.urlList = res.result.records
+          }
+        });
+      },
       onChangedeliveRange() {
         if (this.deliveryRange == '1') {
           this.deliveryRangeShow = false;
@@ -385,16 +492,17 @@
       onChangeDownloadType(value) {
         console.log(value);
         if (this.downloadType == '1') {
+          this.urlId = null;
           this.showDownloadUrl = true;
-          this.showExternalUrl = false;
-          this.showPackageName = true;
           this.showOpenUrlStatus = false;
-
+          this.showDownloadMode = true;
+          this.refreshUrl('android');
         } else {
+          this.urlId = null;
           this.showDownloadUrl = false;
-          this.showExternalUrl = true;
-          this.showPackageName = false;
           this.showOpenUrlStatus = true;
+          this.showDownloadMode = false;
+          this.refreshUrl('page');
         }
       },
       onChangeDeliveryTarget(value) {
@@ -465,12 +573,14 @@
         params.dateQuantum =this.dateQuantum;
         params.pricing = this.pricing;
         params.convertPrice = this.convertPrice;
+        params.itratorNum = this.itratorNum;
         if (this.time != [] && this.time.length == 2) {
           params.startDate = moment(this.time[0]).format('YYYY-MM-DD HH:mm')
           params.endDate = moment(this.time[1]).format('YYYY-MM-DD HH:mm')
         }
 
         params.dateQuantumRange = this.dateQuantumRange;
+        params.urlId = this.urlId;
         e.preventDefault()
         this.form.validateFields((err, values) => {
           if (!err) {
@@ -494,7 +604,7 @@
              postAction(this.url.insertUrl, params).then((res) => {
                console.log(res)
                if (res.success) {
-                 this.$message.success(res.message);
+                 this.$message.success("批量创建成功");
                  this.$emit('ok');
                  this.close();
                } else {
@@ -520,6 +630,10 @@
           });
         }
       },
+      onChangeDownloadMode(){
+        this.urlId = null;
+        this.refreshUrl(this.downloadMode);
+      },
       onChangeFlowDate() {
         console.log(this.flowDateType)
         if (this.flowDateType == '1') {
@@ -531,7 +645,15 @@
       }
     },
     created: function () {
-
+      this.refreshUrl("android");
+      let params = {};
+      params.pageSize = '1000';
+      params.mediaId='1';
+      postAction(this.url.userAllocationList, params).then((res) => {
+        if (res.success) {
+          this.userList = res.result.records
+        }
+      });
     }
   }
 

+ 1 - 2
src/views/report/autodebit.vue

@@ -96,7 +96,7 @@
         accessKeySecret:'1rkPz7JNoXk8sJevPaeYHWqfkQXBGh',
         bucket:'ctop-media',
         region:'oss-cn-beijing',
-        acceptcsv:'text/csv,application/vnd.ms-excel',
+        acceptcsv:'application/vnd.ms-excel,text/csv',
         customDomain:'',
         options:[],
         loading: false,
@@ -127,7 +127,6 @@
             postAction(this.url.uploadUrl,params).then((res)=>{
               console.log(res)
               if(res.success){
-                alert(res.path);
                 this.filepath = res.path;
                 this.downloadUrl = "http://39.97.120.42:8080/jeecg-boot/"+this.url.downloadUrl+"?path="+this.filepath;
                 this.showDownLoad = true;

+ 5 - 1
src/views/template/creative/create.vue

@@ -449,9 +449,11 @@
     </a-form>
   </a-card>
 </template>
+<Spin3 :spinning="loader" tip="创建中"></Spin3>
 
 <script>
   import UploadToAli from '@femessage/upload-to-ali';
+  import Spin3 from '**/spin3'
   import {postAction, getAction} from '@/api/manage';
   import moment from 'moment';
   import AFormItem from "ant-design-vue/es/form/FormItem";
@@ -470,6 +472,7 @@
           xs: { span: 24 },
           sm: { span: 16 },
         },
+        loader:false,
         fileList:[],
         activeConvertList:[],
         showConvertTarget:false,
@@ -692,7 +695,7 @@
         this.form.validateFields((err, values) => {
           if (!err) {
             console.log('Received values of form: ', values);
-
+            this.loader = true;
             let params = {};
             params.campaignId = this.campaignId;
             params.deliveryRange = this.deliveryRange;
@@ -732,6 +735,7 @@
 
             console.log(params)
             postAction(this.url.insertUrl,params).then((res)=>{
+              this.loader = false;
               console.log(res)
               if(res.success){
                 alert("广告创意批量创建成功");