Browse Source

周一(2022-05-23)上线,头条预警

朱鑫波 3 năm trước cách đây
mục cha
commit
c585d90578

+ 1 - 1
.env.production

@@ -25,6 +25,6 @@ VUE_APP_BASE_MOST_SYSTEM = http://118.24.244.213:8808
 # 测试 http://139.186.165.84:8808
 
 #盯盘相关接口
-VUE_APP_BASE_STARE_URL = http://192.168.0.195:9999/material
+VUE_APP_BASE_STARE_URL = http://api.tjyourong.com.cn/material
 # 字安接口 http://192.168.1.43:9999
 # 测试环境 http://192.168.0.195:9999

+ 2 - 2
src/utils/request.js

@@ -21,9 +21,9 @@ 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://gateway.tjyourong.com.cn/jeecg-boot';//测试
-	// axios.defaults.baseURL = 'http://api.tjyourong.com.cn/jeecg-boot'; // 生产环境
+	axios.defaults.baseURL = 'http://api.tjyourong.com.cn/jeecg-boot'; // 生产环境
 	// axios.defaults.baseURL = 'http://gateway.tjyourong.com.cn/jeecg-boot'; // 测试环境
-	axios.defaults.baseURL = 'http://192.168.0.195:9999/jeecg-boot'; // 测试环境
+	// axios.defaults.baseURL = 'http://192.168.0.195:9999/jeecg-boot'; // 测试环境
 	// axios.defaults.baseURL = 'http://192.168.1.134:9999/jeecg-boot'; // 泽宇环境
 
 }

+ 141 - 50
src/views/modules/account-config/components/configuration-modal.vue

@@ -164,6 +164,17 @@
                             <a-radio-button value="CPM" disabled>展示量</a-radio-button>
                         </a-radio-group>
                     </a-form-model-item>
+                     <a-form-model-item label="事件管理" prop="adAssetIds">
+                        <a-select
+                            :disabled="modalTitle === 'edit'"
+                            class="common-input-long"
+                            v-model="configForm.adAssetIds"
+                            placeholder="请选择"
+                            @change="handleAdAssetIds"
+                        >
+                            <a-select-option v-for="(item, index) in adAssetIdsList" :key="index" :value="item.asset_id">{{item.asset_name}}</a-select-option>
+                        </a-select>
+                    </a-form-model-item>
                     <a-form-model-item label="下载链接" prop="adDownloadUrl">
                         <a-input
                             class="common-input-long"
@@ -246,7 +257,7 @@
                         </div>
                     </div>
                 </div>
-                <div class="separate-module-con">
+                <!-- <div class="separate-module-con">
                     <p class="rock-title">优化目标</p>
                     <a-form-model-item label="转化跟踪方式" :prop="configForm.launchTarget === 'OCPM' ? 'adConvertType' : ''">
                         <a-select
@@ -279,7 +290,7 @@
                             </a-select-option>
                         </a-select>
                     </a-form-model-item>
-                </div>
+                </div> -->
                 <div class="separate-module-con">
                     <p class="rock-title">设置投放位置</p>
                     <a-form-model-item label="广告位置">
@@ -1767,10 +1778,12 @@ export default {
                 creativeCallToAction: [{required: true, message: '请选择', trigger: 'change'}],
                 creativeActionText: [{required: true, message: '请选择', trigger: 'change'}],
                 adConvertType: [{required: true, message: '请选择', trigger: 'change'}],
+                adAssetIds: [{required: true, message: '请选择', trigger: 'change'}],
                 adConvertId: [{required: true, message: '请选择', trigger: 'change'}],
                 creativeThirdIndustryIds: [{required: true, message: '请选择', trigger: 'change'}],
                 adDeepCpabid:[ {required: true, message: '请输入', trigger: 'blur'},]
             },
+            adAssetIdsList:[],
             configForm: {
                 adDeepBidType:'DEEP_BID_MIN',
                 adDeepCpabid:0.1,
@@ -1827,6 +1840,12 @@ export default {
                 adOpenUrl: '', // 直达链接内容
                 adPackage: '', // 应用包名
                 adConvertType: '', // 转化跟踪方式
+                adAssetIds:'', //事件管理
+                assetType:'',
+                adExternalAction:'',//
+                adDeepExternalAction:'',
+                adTrackUrlGroupType:'',
+                adTrackUrlGroupId:'',
                 adConvertId: '', // 优化目标  --  走接口
                 adverPosition: 'a', // 广告位置
                 radioChangeValue: '', // 广告位置-按照场景指定位置
@@ -2093,6 +2112,7 @@ export default {
     },
     mounted() {
         const routeQuery = JSON.parse(localStorage.getItem('queryList'));
+       
         if (routeQuery.accountModal === 'edit') {
             this.modalTitle = 'edit';
             this.handleGetDetailList();
@@ -2139,6 +2159,67 @@ export default {
             }
 
         },
+        getAdList(){
+            getAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/getEventAssetsAccount', 
+                { 
+                    accountId: this.configForm.accountId,
+                    landingType: 'APP'
+                })
+                .then(result => {
+                    if (result.code === 0) {
+                        this.adAssetIdsList = result.result.app
+                    }
+            })
+        },
+        handleAdAssetIds(data){
+            if(!data){
+
+            }else{
+               var dataOne = this.adAssetIdsList.filter(item=>{
+                   return item.asset_id == data
+               })[0]
+               this.configForm.adDownloadUrl = dataOne.download_url
+               this.configForm.adPackage = dataOne.package_name
+               this.configForm.assetType = dataOne.app_type
+               this.getConvertOptimized()
+               this.getOptimizedTrackUrl()
+            }
+        },
+        getConvertOptimized(){
+            getAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/getConvertOptimized', 
+                { 
+                    accountId: this.configForm.accountId,
+                    landingType: this.configForm.campaignLandingType,
+                    marketingPurpose: this.configForm.marketingPurpose,
+                    assetType: 'APP',
+                    packageName:this.configForm.adPackage,
+                    appType:this.configForm.assetType
+                })
+                .then(result => {
+                    if (result.code === 0) {
+                        this.configForm.adExternalAction = result.result.goals[0].external_action
+                        if(result.result.goals[0].deep_goals.length>0){
+                            this.deepExternalShow = true;
+                            this.configForm.adDeepExternalAction = result.result.goals[0].deep_goals[0].deep_external_action
+                        }else{
+                           this.deepExternalShow = false; 
+                        }
+                    }
+            })
+        },
+        getOptimizedTrackUrl(){
+            getAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/getOptimizedTrackUrl', 
+                { 
+                    accountId: this.configForm.accountId,
+                    downloadUrl: this.configForm.adDownloadUrl,
+                    assetId: this.configForm.adAssetIds
+                })
+                .then(result => {
+                    if (result.code === 0) {
+                        this.configForm.adTrackUrlGroupId = result.result.track_url_groups[0].track_url_group_id
+                    }
+            })
+        },
         handleSelectValue(data) {
             this.deepExternalShow = false;
             this.configForm.accountId = data.id;
@@ -2184,6 +2265,7 @@ export default {
             this.toolConvertList = [];
             this.optimizationOption = [];
             this.handleClearlist();
+            this.getAdList()
 
             if (this.configForm.customPerson === 'a' && this.configForm.adRetargetingTagsType === '1') {
                 this.$refs.direct.selectRightData = [];
@@ -2682,56 +2764,56 @@ export default {
             }
         },
         handleGetPackage() {
-            const params = {
-                urlPath: this.configForm.adDownloadUrl
-            };
-            getAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/getPackageNameByUrl', params)
-                .then(result => {
-                    if (result.code === 0) {
-                        this.configForm.adPackage = result.result.package || '';
-                        this.platformLoadingType = result.result.platform || '';
-                        if (result.result.platform && result.result.platform === 'APP_ANDROID') {
-                            this.configForm.adPlatform = 'ANDROID';
-                        }
-                        else if (result.result.platform && result.result.platform === 'APP_IOS') {
-                            this.configForm.adPlatform = 'IOS';
-                        }
-                    }
-                    else {
-                        this.$message.error(result.message);
-                    }
-                })
-                .catch(error => {
-                    console.log(error, 'eeee');
-                });
+            // const params = {
+            //     urlPath: this.configForm.adDownloadUrl
+            // };
+            // getAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/getPackageNameByUrl', params)
+            //     .then(result => {
+            //         if (result.code === 0) {
+            //             this.configForm.adPackage = result.result.package || '';
+            //             this.platformLoadingType = result.result.platform || '';
+            //             if (result.result.platform && result.result.platform === 'APP_ANDROID') {
+            //                 this.configForm.adPlatform = 'ANDROID';
+            //             }
+            //             else if (result.result.platform && result.result.platform === 'APP_IOS') {
+            //                 this.configForm.adPlatform = 'IOS';
+            //             }
+            //         }
+            //         else {
+            //             this.$message.error(result.message);
+            //         }
+            //     })
+            //     .catch(error => {
+            //         console.log(error, 'eeee');
+            //     });
         },
         editPackage(){
-            var that = this
-            return new Promise(function (resolve, reject) {
-                const params = {
-                    urlPath: that.configForm.adDownloadUrl
-                };
-                getAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/getPackageNameByUrl', params)
-                    .then(result => {
-                        if (result.code === 0) {
-                            // this.configForm.adPackage = result.result.package || '';
-                            // this.platformLoadingType = result.result.platform || '';
-                            // if (result.result.platform && result.result.platform === 'APP_ANDROID') {
-                            //     this.configForm.adPlatform = 'ANDROID';
-                            // }
-                            // else if (result.result.platform && result.result.platform === 'APP_IOS') {
-                            //     this.configForm.adPlatform = 'IOS';
-                            // }
-                            resolve(result.result.platform)
-                        }
-                        else {
-                            reject('调用失败')
-                        }
-                    })
-                    .catch(error => {
-                        console.log(error, 'eeee');
-                    });
-            })
+            // var that = this
+            // return new Promise(function (resolve, reject) {
+            //     const params = {
+            //         urlPath: that.configForm.adDownloadUrl
+            //     };
+            //     getAction(urlAcount + '/bytedance-api/advertiser/aiBytedanceAdvertiserStrategy/getPackageNameByUrl', params)
+            //         .then(result => {
+            //             if (result.code === 0) {
+            //                 // this.configForm.adPackage = result.result.package || '';
+            //                 // this.platformLoadingType = result.result.platform || '';
+            //                 // if (result.result.platform && result.result.platform === 'APP_ANDROID') {
+            //                 //     this.configForm.adPlatform = 'ANDROID';
+            //                 // }
+            //                 // else if (result.result.platform && result.result.platform === 'APP_IOS') {
+            //                 //     this.configForm.adPlatform = 'IOS';
+            //                 // }
+            //                 resolve(result.result.platform)
+            //             }
+            //             else {
+            //                 reject('调用失败')
+            //             }
+            //         })
+            //         .catch(error => {
+            //             console.log(error, 'eeee');
+            //         });
+            // })
         },
         handleAndroidVersion(e) {
             if (e.target.value === 'NONE') {
@@ -2898,8 +2980,10 @@ export default {
                         setTimeout(() => {
                             this.configForm.adConvertId = detailData.adConvertId;
                             this.spinning = false;
+                            this.getAdList()
                         }, 200);
                         
+                        
                        
                         this.configForm.adDownloadUrl = detailData.adDownloadUrl || '';
                         this.handleGetPackage()
@@ -3024,6 +3108,13 @@ export default {
                         this.configForm.campaignType = detailData.campaignType;
                         this.configForm.campaignName = detailData.campaignName || '';
                         this.configForm.dpLinkIndexUsed = detailData.dpLinkIndexUsed;
+
+                        this.configForm.adAssetIds = detailData.adAssetIds
+                        this.configForm.adExternalAction = detailData.adExternalAction
+                        this.configForm.adDeepExternalAction = detailData.adDeepExternalAction
+                        this.configForm.adTrackUrlGroupType = detailData.adTrackUrlGroupType
+                        this.configForm.adTrackUrlGroupId = detailData.adTrackUrlGroupId
+
                         if (detailData.dpLinkIndexUsed === 1) {
                             this.$nextTick(() => {
                                 this.adNameTags.push('dp链接标识');

+ 7 - 1
src/views/modules/advertiser/AdvertiserList.vue

@@ -119,7 +119,7 @@
         <!-- {{ text | ocpxActionType }} -->
       </span>
         <span slot="bidType" slot-scope="text">
-          <div v-if="text && JSON.parse(text).length > 0">
+          <div v-if="text && JSON.parse(text).length > 0&& (typeof JSON.parse(text)) != 'string'">
             <span v-for="(item, index) of JSON.parse(text)" :key="index"
               >{{ item | bidType }}{{ index == JSON.parse(text).length - 1 ? '' : '、' }}</span
             >
@@ -266,6 +266,11 @@ const projectColumns = [
     dataIndex: 'productId_dictText',
   },
   {
+    title: '代理商名称',
+    align: 'center',
+    dataIndex: 'agentCode_dictText',
+  },
+  {
     title: '广告主名称',
     align: 'center',
     dataIndex: 'advertiserId_dictText',
@@ -410,6 +415,7 @@ export default {
     bidType(sta) {
       var data = {
         null: '-',
+        '[]':'-',
         1: 'CPM',
         2: '点击数',
         6: 'OCPC',

+ 13 - 1
src/views/modules/advertiser/ProjectList.vue

@@ -145,7 +145,7 @@
         <span slot="bidType" slot-scope="text">
           <div v-if="text && JSON.parse(text).length > 0">
             <span v-for="(item, index) of JSON.parse(text)" :key="index"
-              >{{ item | bidType }}{{ index == JSON.parse(text).length - 1 ? '' : '、' }}</span
+              >{{ item | bidType }}{{ JSON.parse(text).length ==0||index == JSON.parse(text).length - 1 ? '' : '、' }}</span
             >
           </div>
           <div v-else>-</div>
@@ -205,6 +205,18 @@ export default {
           dataIndex: 'advertiserId_dictText',
         },
         {
+          title: '代理商名称',
+          align: 'center',
+          dataIndex: 'agentCode_dictText',
+          customRender:function(t){
+            if(t){
+              return t
+            }else{
+              return '-'
+            }
+          }
+        },
+        {
           title: '优化目标',
           align: 'center',
           dataIndex: 'bidType',

+ 207 - 57
src/views/modules/advertiser/modules/ProjectModal.vue

@@ -13,6 +13,15 @@
             <a-radio-button value="6">磁力金牛</a-radio-button>
           </a-radio-group>
         </a-form-item>
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="代理商名称">
+          <a-select optionFilterProp="children" showSearch :filterOption="filterOption"
+            v-decorator="['agentCode', validatorRules.agentCodeRule]">
+            <a-select-option :value="item.agentCode" v-for="(item, index) in agentCodeList" :key="index">
+              {{ item.agentName }}
+            </a-select-option>
+          </a-select>
+        </a-form-item>
+        
         <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="项目名称">
           <a-input placeholder="请输入项目名称" v-decorator="['projectName', validatorRules.projectName]" />
         </a-form-item>
@@ -54,7 +63,8 @@
         </a-form-item>
         <a-form-item v-if="model.mediaId == '1' || model.mediaId == '3'|| model.mediaId == '5'" :labelCol="labelCol" :wrapperCol="wrapperCol"
           label="最高转化出价">
-          <a-input placeholder="最高转化出价" v-decorator="['maxDeepCpaBid']" addonAfter="元" />
+          <a-input placeholder="最高转化出价" v-decorator="['maxDeepCpaBid']" addonAfter="元" 
+          @keyup.native="form.setFieldsValue({maxDeepCpaBid:getFormFieldValue('maxDeepCpaBid').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')})"/>
         </a-form-item>
         <div v-show="model.mediaId == '2' || model.mediaId == '4'|| model.mediaId == '6'">
           <div v-if="model.mediaId == '2' || model.mediaId == '4'|| model.mediaId == '6'">
@@ -126,6 +136,54 @@
 
         </div>
 
+        <div v-show="model.mediaId == '1' || model.mediaId == '3'|| model.mediaId == '5'">
+          <div v-if="model.mediaId == '1' || model.mediaId == '3'|| model.mediaId == '5'">
+            <a-form-item label="转化目标" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <!-- v-model="model.ocpxActionType" -->
+              <a-select @change="ocpxActionToutiaoChange($event)" @deselect="ocpextiondeselect" v-decorator="[
+                  'ocpxActionType',
+                  { rules: [{ required: true, message: '请选择转化目标' }] },
+                ]" mode="multiple">
+                <!-- <a-select-option :value="2">行为数</a-select-option> -->
+                <a-select-option :value="item.ocpxActionType" v-for="(item, index) in ocpxList.conversionType" :key="index">{{
+                  item.ocpxActionName
+                  }}</a-select-option>
+              </a-select>
+            </a-form-item>
+
+            <div v-if="Array.isArray(getFormFieldValue('ocpxActionType'))">
+              <a-form-item v-if="getFormFieldValue('ocpxActionType').length > 0" :labelCol="labelCol"
+                :wrapperCol="wrapperCol" v-for="(item, index) in ocpxActionTypeArray" :key="index"
+                :label="item.ocpxName+'最高出价'">
+                <a-input @input="maxValueInput"
+                  @keyup.native="item.maxValue = item.maxValue.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');"
+                  placeholder="请输入最高出价" v-model="item.maxValue" addonAfter="元" />
+              </a-form-item>
+            </div>
+
+            <div v-if="Array.isArray(getFormFieldValue('ocpxActionType'))">
+              <a-form-item  label="深度转化目标" :labelCol="labelCol" :wrapperCol="wrapperCol" >
+                <!-- v-model="model.ocpxActionType" -->
+                <a-select @change="depthToutiaoChange($event)" @deselect="depthChangedeselect" v-model="model.deepConversionType" mode="multiple">
+                  <a-select-option :value="item.ocpxActionType" v-for="(item, index) in ocpxList.deepConversionType" :key="index">{{
+                    item.ocpxActionName
+                    }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </div>
+            <div>
+              <a-form-item v-show="model.deepConversionType.length >0" :labelCol="labelCol" :wrapperCol="wrapperCol"
+                v-for="(item, index) in depthArray" :key="index" :label="item.deepName+'最高出价'">
+                <a-input placeholder="请输入最高出价" @input="deepInput"
+                  @keyup.native="item.deepValue = item.deepValue.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');"
+                  v-model="item.deepValue" addonAfter="元" />
+              </a-form-item>
+            </div>
+
+          </div>
+
+        </div>
+
         <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="销售">
           <a-select showSearch optionFilterProp="children" style="width: 100%" :filterOption="filterOption"
             v-decorator="['saleId', { rules: [{ required: true, message: '请选择销售' }] }]">
@@ -191,8 +249,9 @@
           advertiserId: { rules: [{ required: true, message: '请选择广告主!' }] },
           productId: { rules: [{ required: true, message: '请选择产品!' }] },
           supplierCode: { rules: [{ required: true, message: '请选择供应商!' }], initialValue: 'kuaishou_001' },
+          agentCodeRule: { rules: [{ required: true, message: '请选择代理商!' }] },
           responsibleName: { rules: [{ required: true, message: '请选择负责人!' }] },
-          maxBid: { rules: [{ required: true, message: '请输入最高出价!' }, { validator: this.validateInputCode }] },
+          maxBid: { rules: [{ required: false, message: '请输入最高出价!' }] },
         },
         url: {
           add: '/ctop/project/add',
@@ -218,6 +277,7 @@
         options: [],
         optionsElse: [],
         supplierList: [],
+        agentCodeList:[],
         editAll: false,
         ocpxList: [],
         ocpxActionTypeArray: [],
@@ -227,6 +287,7 @@
     },
     created() {
       this.getSupplierList()
+      this.getAgentCodeList()
     },
     methods: {
       deepInput() {
@@ -277,6 +338,21 @@
           this.model.deepConversionType = [];
         }
       },
+      ocpxActionToutiaoChange(item){
+        item.forEach(element => {
+          this.ocpxList.conversionType.find((par) => {
+            if (par.ocpxActionType == element) {
+             
+              this.ocpxActionTypeArray.push({ ocpxCode: par.ocpxActionType, ocpxName: par.ocpxActionName,maxValue:undefined });
+            }
+
+          })
+        });
+        this.deWeight();
+        if (item.length == 0) {
+          this.model.deepConversionType = [];
+        }
+      },
       deWeight() {
             for (var i = 0; i < this.ocpxActionTypeArray.length - 1; i++) {
                 for (var j = i + 1; j < this.ocpxActionTypeArray.length; j++) {
@@ -309,6 +385,17 @@
         });
         this.duplicate();
       },
+      depthToutiaoChange(event){
+        this.depthArray = []
+        event.forEach(element => {
+          this.ocpxList.deepConversionType.find((par) => {
+            if (par.ocpxActionType == element) {
+              this.depthArray.push({ deepCode: par.ocpxActionType, deepName: par.ocpxActionName, deepValue: undefined })
+            }
+
+          })
+        });
+      },
       duplicate(){
         for (var i = 0; i < this.depthArray.length - 1; i++) {
                 for (var j = i + 1; j < this.depthArray.length; j++) {
@@ -321,11 +408,9 @@
             }
       },
       depthChangedeselect(item){
-        this.depthArray.forEach((element,index) => {
-            if (element.deepCode == item) {
-              this.depthArray.splice(index,1)
-            }
-          });
+        console.log(item, this.depthArray)
+        var index = this.depthArray.findIndex((v) => v.deepCode === item)
+        this.depthArray.splice(index, 1)
       },
       validateInputCode(rule, value, callback) {
         if (value > 0) {
@@ -351,26 +436,30 @@
       onChange(e) {
         console.log(this.ocpxActionTypeArray);
         console.log(e);
-        
-        if (e.target.value == 1 || e.target.value == 3) {
-        //  console.log(this.model.bidType);
-         this.$nextTick(()=>{
-           this.form.setFieldsValue({maxBid:this.model.maxBid,bidType:this.model.bidType})
-         })
+        this.getOcpxList()
+        this.depthArray = []
+        this.ocpxActionTypeArray = []
+        this.model.deepConversionType = []
+        this.form.resetFields()
+        // if (e.target.value == 1 || e.target.value == 3) {
+        // //  console.log(this.model.bidType);
+        //  this.$nextTick(()=>{
+        //    this.form.setFieldsValue({maxBid:this.model.maxBid,bidType:this.model.bidType})
+        //  })
           
-          // this.form.maxBid = this.model.maxBid ? this.model.maxBid / 1000 : 0
-          // console.log(this.form.getFieldValue('maxBid'));
-        }else{
-          this.$nextTick(()=>{
-            this.form.setFieldsValue({bidType:this.model.bidType})
-          })
-          setTimeout(()=>{
-            this.form.setFieldsValue({ocpxActionType:this.model.ocpxActionType})
-          },100)
-          console.log(this.model.bidType);
+        //   // this.form.maxBid = this.model.maxBid ? this.model.maxBid / 1000 : 0
+        //   // console.log(this.form.getFieldValue('maxBid'));
+        // }else{
+        //   this.$nextTick(()=>{
+        //     this.form.setFieldsValue({bidType:this.model.bidType})
+        //   })
+        //   setTimeout(()=>{
+        //     this.form.setFieldsValue({ocpxActionType:this.model.ocpxActionType})
+        //   },100)
+        //   console.log(this.model.bidType);
           
-        }
-        console.log(`checked = ${e.target.value}`)
+        // }
+        // console.log(`checked = ${e.target.value}`)
         // this.form.resetFields([])
       },
       handleChange(value) {
@@ -407,6 +496,17 @@
           })
           .finally(() => { })
       },
+      getAgentCodeList() {
+        // /agent/agentConfig/list
+        getAction('/agent/agentConfig/list').then((res) => {
+          console.log(res)
+          if (res.success) {
+            this.agentCodeList = res.result.records
+          } else {
+            this.$message.warning(res.message)
+          }
+        })
+      },
       getSupplierList() {
         var params = {}
         getAction('/ctop/supplierList/list', { pageNo: 1, pageSize: 100 }).then((res) => {
@@ -485,19 +585,55 @@
           console.log(params.deepConversionType);
           this.depthArray = newArrayTwo
           this.depthArray.forEach(item => {
-            item.deepValue = item.deepValue ? item.deepValue / 1000 : 0
+            item.deepValue = item.deepValue ? item.deepValue / 1000 : undefined
           });
           console.log(this.depthArray);
         } else {
           var { ocpxActionType, deepConversionType, bidType, ...params } = record
+           let newArray = [];
+          newArray = record.ocpxActionType == null || record.ocpxActionType == '' ? [] : JSON.parse(record.ocpxActionType)
+          params.ocpxActionType = [];
+          newArray.forEach(element => {
+            if (element.ocpxCode) {
+              params.ocpxActionType.push(element.ocpxCode)
+            }
+
+          });
+          this.ocpxActionTypeArray = newArray
+          this.ocpxActionTypeArray.forEach(item => {
+            if (item.maxValue) {
+              item.maxValue = item.maxValue ? item.maxValue / 1000 : undefined
+            }
+
+          });
+
+          let newArrayTwo = [];
+          newArrayTwo = record.deepConversionType == null || record.deepConversionType == '' ? [] : JSON.parse(record.deepConversionType)
+          params.deepConversionType = [];
+          newArrayTwo.forEach(event => {
+            params.deepConversionType.push(event.deepCode)
+          });
+
+          let obj = {}
+          newArrayTwo = newArrayTwo.reduce((preVal,curVal) => {
+            obj[curVal.deepCode] ? "" : obj[curVal.deepCode] = preVal.push(curVal)
+              return preVal
+          },[])
+          console.log(params.deepConversionType);
+          this.depthArray = newArrayTwo
+          this.depthArray.forEach(item => {
+            item.deepValue = item.deepValue ? item.deepValue / 1000 : undefined
+          });
+          console.log(this.depthArray);
           this.showDian = false
         }
         this.form.resetFields()
         this.model = Object.assign({}, params)
         console.log(this.model);
-        this.model.maxBid = this.model.maxBid ? this.model.maxBid / 1000 : 0
-        this.model.maxDeepCpaBid = this.model.maxDeepCpaBid ? this.model.maxDeepCpaBid / 1000 : 0
+        this.model.maxBid = this.model.maxBid ? this.model.maxBid / 1000 : undefined
+        this.model.maxDeepCpaBid = this.model.maxDeepCpaBid ? this.model.maxDeepCpaBid / 1000 : undefined
         this.visible = true
+        this.getOcpxList()
         this.$nextTick(() => {
           console.log(this.model)
           if (record.advertiserId) {
@@ -519,6 +655,7 @@
                 // 'advertiserType',
                 'saleId',
                 'bidType',
+                'agentCode'
               )
             )
           } else {
@@ -541,6 +678,7 @@
                 'bidType',
                 'ocpxActionType',
                 'deepConversionType',
+                'agentCode'
               )
             )
           }
@@ -595,11 +733,11 @@
               }
               var data = values.advertiserId
               let formData = Object.assign(this.model, values)
-                if (this.model.mediaId == 1 || this.model.mediaId == 3|| this.model.mediaId == 5) {
-                  this.ocpxActionTypeArray = [];
-                  this.depthArray = [];
-                  formData.bidType = [];
-                }
+                // if (this.model.mediaId == 1 || this.model.mediaId == 3|| this.model.mediaId == 5) {
+                //   this.ocpxActionTypeArray = [];
+                //   this.depthArray = [];
+                //   formData.bidType = [];
+                // }
                 
               if (this.maxBidShow) {
                 formData.maxBid = formData.maxBid * 1000
@@ -623,6 +761,9 @@
 
               // formData.ocpxActionType = formData.bidType == 2 ? JSON.stringify([0]) : JSON.stringify(formData.ocpxActionType)
               formData.bidType = JSON.stringify(formData.bidType)
+              if (this.model.mediaId == '1' || this.model.mediaId == '3'|| this.model.mediaId == '5') {
+                formData.bidType = '[]'
+              }
               this.ocpxActionTypeArray.forEach(element => {
                 if (element.maxValue) {
                   element.maxValue = element.maxValue * 1000;
@@ -678,32 +819,41 @@
         this.resId = key
       },
       getOcpxList() {
-        this.getAction('/ocpx/kuaiShouOcpxActionTypeConfig/list').then((res) => {
-          if (res.success) {
-            this.ocpxList = res.result;
-            //     this.ocpxActionTypeArray = [];
-            //     this.model.ocpxActionType.forEach(element => {
-            //    this.ocpxList.find((par)=>{
-            //   if (par.ocpxActionType == element) {
-            //    this.ocpxActionTypeArray.push({ocpxCode:par.ocpxActionType,ocpxName:par.ocpxActionName});
-            //   } 
-            // })
-            // });
-            // if (this.model.deepConversionType) {
-            //    this.depthArray = [];
-            // this.model.deepConversionType.forEach(element => {
-            //    this.depthList.find((par)=>{
-            //   if (par.value == element) {
-            //    this.depthArray.push({deepCode:par.value,deepName:par.name})
-            //   }
-
-            // })
-            // });
-            // } 
+        if(this.model.mediaId == '1' ||this.model.mediaId == '3'||this.model.mediaId == '5' ){
+           this.getAction('/ocpx/kuaiShouOcpxActionTypeConfig/bytedanceList').then((res) => {
+            if (res.success) {
+              this.ocpxList = res.result;
+            }
+           })
+        }else{
+          this.getAction('/ocpx/kuaiShouOcpxActionTypeConfig/list').then((res) => {
+            if (res.success) {
+              this.ocpxList = res.result;
+              //     this.ocpxActionTypeArray = [];
+              //     this.model.ocpxActionType.forEach(element => {
+              //    this.ocpxList.find((par)=>{
+              //   if (par.ocpxActionType == element) {
+              //    this.ocpxActionTypeArray.push({ocpxCode:par.ocpxActionType,ocpxName:par.ocpxActionName});
+              //   } 
+              // })
+              // });
+              // if (this.model.deepConversionType) {
+              //    this.depthArray = [];
+              // this.model.deepConversionType.forEach(element => {
+              //    this.depthList.find((par)=>{
+              //   if (par.value == element) {
+              //    this.depthArray.push({deepCode:par.value,deepName:par.name})
+              //   }
+
+              // })
+              // });
+              // } 
 
 
-          }
-        })
+            }
+          })
+        }
+
       },
     },
   }

+ 192 - 19
src/views/modules/advertiser/modules/projectListModal.vue

@@ -16,6 +16,14 @@
           <a-input placeholder="请输入项目名称" v-decorator="['projectName', validatorRules.projectName]" disabled />
         </a-form-item>
 
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="代理商名称">
+          <a-select optionFilterProp="children" showSearch :filterOption="filterOption"
+            v-decorator="['agentCode', validatorRules.agentCodeRule]">
+            <a-select-option :value="item.agentCode" v-for="(item, index) in agentCodeList" :key="index">
+              {{ item.agentName }}
+            </a-select-option>
+          </a-select>
+        </a-form-item>
         <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="供应商"
           v-if="model.mediaId == '2' || model.mediaId == '4'|| model.mediaId == '6'">
           <a-select optionFilterProp="children" showSearch :filterOption="filterOption"
@@ -107,6 +115,55 @@
 
 
         </div>
+        <div v-else> 
+          <div v-show="model.mediaId == '1' || model.mediaId == '3'|| model.mediaId == '5'">
+            <div v-if="model.mediaId == '1' || model.mediaId == '3'|| model.mediaId == '5'">
+              <a-form-item label="转化目标" :labelCol="labelCol" :wrapperCol="wrapperCol">
+                <!-- v-model="model.ocpxActionType" -->
+                <a-select @change="ocpxActionToutiaoChange($event)" @deselect="ocpextiondeselect" v-decorator="[
+                    'ocpxActionType',
+                    { rules: [{ required: true, message: '请选择转化目标' }] },
+                  ]" mode="multiple">
+                  <!-- <a-select-option :value="2">行为数</a-select-option> -->
+                  <a-select-option :value="item.ocpxActionType" v-for="(item, index) in ocpxList.conversionType" :key="index">{{
+                    item.ocpxActionName
+                    }}</a-select-option>
+                </a-select>
+              </a-form-item>
+
+              <div v-if="Array.isArray(getFormFieldValue('ocpxActionType'))">
+                <a-form-item v-if="getFormFieldValue('ocpxActionType').length > 0" :labelCol="labelCol"
+                  :wrapperCol="wrapperCol" v-for="(item, index) in ocpxActionTypeArray" :key="index"
+                  :label="item.ocpxName+'最高出价'">
+                  <a-input @input="maxValueInput"
+                    @keyup.native="item.maxValue = item.maxValue.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');"
+                    placeholder="请输入最高出价" v-model="item.maxValue" addonAfter="元" />
+                </a-form-item>
+              </div>
+
+              <div v-if="Array.isArray(getFormFieldValue('ocpxActionType'))">
+                <a-form-item  label="深度转化目标" :labelCol="labelCol" :wrapperCol="wrapperCol" >
+                  <!-- v-model="model.ocpxActionType" -->
+                  <a-select @change="depthToutiaoChange($event)" @deselect="depthChangedeselect" v-model="model.deepConversionType" mode="multiple">
+                    <a-select-option :value="item.ocpxActionType" v-for="(item, index) in ocpxList.deepConversionType" :key="index">{{
+                      item.ocpxActionName
+                      }}</a-select-option>
+                  </a-select>
+                </a-form-item>
+              </div>
+              <div>
+                <a-form-item v-show="model.deepConversionType.length >0" :labelCol="labelCol" :wrapperCol="wrapperCol"
+                  v-for="(item, index) in depthArray" :key="index" :label="item.deepName+'最高出价'">
+                  <a-input placeholder="请输入最高出价" @input="deepInput"
+                    @keyup.native="item.deepValue = item.deepValue.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');"
+                    v-model="item.deepValue" addonAfter="元" />
+                </a-form-item>
+              </div>
+
+            </div>
+
+          </div>
+        </div>
         </div>
         <!-- <div v-else>
           <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="优化目标">
@@ -202,8 +259,9 @@
           advertiserId: { rules: [{ required: true, message: '请选择广告主!' }] },
           productId: { rules: [{ required: true, message: '请选择产品!' }] },
           supplierCode: { rules: [{ required: true, message: '请选择供应商!' }], initialValue: 'kuaishou_001' },
+          agentCodeRule: { rules: [{ required: true, message: '请选择代理商!' }] },
           responsibleName: { rules: [{ required: true, message: '请选择负责人!' }] },
-          maxBid: { rules: [{ required: true, message: '请输入最高出价!' }, { validator: this.validateInputCode }] },
+          maxBid: { rules: [{ required: false, message: '请输入最高出价!' }] },
         },
         url: {
           add: '/ctop/project/add',
@@ -217,6 +275,7 @@
         options: [],
         optionsElse: [],
         supplierList: [],
+        agentCodeList:[],
         editAll: false,
         showDian: false,
         depthList: [
@@ -238,6 +297,7 @@
     },
     created() {
       this.getSupplierList()
+      this.getAgentCodeList()
     },
     methods: {
       deepInput() {
@@ -272,6 +332,21 @@
          
         }
       },
+      ocpxActionToutiaoChange(item){
+        item.forEach(element => {
+          this.ocpxList.conversionType.find((par) => {
+            if (par.ocpxActionType == element) {
+             
+              this.ocpxActionTypeArray.push({ ocpxCode: par.ocpxActionType, ocpxName: par.ocpxActionName,maxValue:undefined });
+            }
+
+          })
+        });
+        this.deWeight();
+        if (item.length == 0) {
+          this.model.deepConversionType = [];
+        }
+      },
       ocpxActionTypeChange(item) {
         // this.ocpxActionTypeArray = [];
         item.forEach(element => {
@@ -324,6 +399,17 @@
         this.duplicate();
         
       },
+      depthToutiaoChange(event){
+        this.depthArray = []
+        event.forEach(element => {
+          this.ocpxList.deepConversionType.find((par) => {
+            if (par.ocpxActionType == element) {
+              this.depthArray.push({ deepCode: par.ocpxActionType, deepName: par.ocpxActionName, deepValue: undefined })
+            }
+
+          })
+        });
+      },
       duplicate(){
         for (var i = 0; i < this.depthArray.length - 1; i++) {
                 for (var j = i + 1; j < this.depthArray.length; j++) {
@@ -380,6 +466,17 @@
           })
           .finally(() => { })
       },
+      getAgentCodeList() {
+        // /agent/agentConfig/list
+        getAction('/agent/agentConfig/list').then((res) => {
+          console.log(res)
+          if (res.success) {
+            this.agentCodeList = res.result.records
+          } else {
+            this.$message.warning(res.message)
+          }
+        })
+      },
       getSupplierList() {
         var params = {}
         getAction('/ctop/supplierList/list', { pageNo: 1, pageSize: 100 }).then((res) => {
@@ -399,9 +496,10 @@
         })
       },
       edit(record) {
+        console.log(record)
         this.getSupplierList()
         this.getList()
-        this.getOcpxList()
+        
         if (record.advertiserId) {
           this.editAll = true
           getAction('/ctop/product/list', { advertiserId: record.advertiserId, pageSize: 1000 }).then((res) => {
@@ -452,6 +550,11 @@
           newArrayTwo.forEach(event => {
             params.deepConversionType.push(event.deepCode)
           });
+          let obj = {}
+          newArrayTwo = newArrayTwo.reduce((preVal,curVal) => {
+            obj[curVal.deepCode] ? "" : obj[curVal.deepCode] = preVal.push(curVal)
+              return preVal
+          },[])
           console.log(params.deepConversionType);
           this.depthArray = newArrayTwo
           this.depthArray.forEach(item => {
@@ -466,19 +569,50 @@
          
         } else {
           var { ocpxActionType, bidType, ...params } = record
-          this.showDian = false
           
+          let newArray = [];
+          newArray = record.ocpxActionType == null || record.ocpxActionType == '' || record.ocpxActionType == "[0]" ? [] : JSON.parse(record.ocpxActionType)
+          params.ocpxActionType = [];
+          newArray.forEach(element => {
+            params.ocpxActionType.push(element.ocpxCode)
+          });
+          this.ocpxActionTypeArray = newArray
+          this.ocpxActionTypeArray.forEach(item => {
+            if (item.maxValue) {
+              item.maxValue = item.maxValue ? item.maxValue / 1000 : undefined
+            }
+
+          });
+
+          let newArrayTwo = [];
+          newArrayTwo = record.deepConversionType == null || record.deepConversionType == '' ? [] : JSON.parse(record.deepConversionType)
+          params.deepConversionType = [];
+          newArrayTwo.forEach(event => {
+            params.deepConversionType.push(event.deepCode)
+          });
+          console.log(params.deepConversionType);
+          this.depthArray = newArrayTwo
+          this.depthArray.forEach(item => {
+            if (item.deepValue) {
+              item.deepValue = item.deepValue ? item.deepValue / 1000 : undefined
+            }
+
+
+          });
+          this.showDian = false
         }
+
         this.form.resetFields()
         this.model = Object.assign({}, params)
-        this.model.maxBid = this.model.maxBid ? this.model.maxBid / 1000 : 0
-        this.model.maxDeepCpaBid = this.model.maxDeepCpaBid ? this.model.maxDeepCpaBid / 1000 : 0
+        this.model.maxBid = this.model.maxBid ? this.model.maxBid / 1000 : undefined
+        this.model.maxDeepCpaBid = this.model.maxDeepCpaBid ? this.model.maxDeepCpaBid / 1000 : undefined
         // if (record.mediaId == '2' || record.mediaId == '4') {
         //   this.model.bidType = this.model.bidType == null ? [2] : JSON.parse(this.model.bidType)
         //   this.model.ocpxActionType = this.model.ocpxActionType == null ? [2] : JSON.parse(this.model.ocpxActionType)
         // }
         this.visible = true
         console.log(this.model)
+        this.getOcpxList()
         this.$nextTick(() => {
           if (record.advertiserId) {
             this.form.setFieldsValue(
@@ -495,7 +629,10 @@
                 'supplierCode',
                 // 'advertiserType',
                 'saleId',
-                'bidType'
+                'bidType',
+                'agentCode',
+                 'ocpxActionType',
+                'deepConversionType',
               )
             )
           } else {
@@ -512,7 +649,9 @@
                 // 'advertiserType',
                 'saleId',
                 'bidType',
-                'ocpxActionType'
+                'ocpxActionType',
+                'deepConversionType',
+                'agentCode'
               )
             )
           }
@@ -541,19 +680,14 @@
         var isEvery = '';
         var deepIsEvery = '';
         // 触发表单验证
-        if (this.model.mediaId == 2 || this.model.mediaId == 4 ||this.model.mediaId == 6) {
+
            isEvery = this.ocpxActionTypeArray.every((item, i) => {
           return "maxValue" in item && item.maxValue != "" && item.maxValue * 1000 >= 0 && item.maxValue * 1000 <= 999999 * 1000
         })
          deepIsEvery = this.depthArray.every((event, i) => {
           return "deepValue" in event && event.deepValue != "" && event.deepValue * 1000 >= 0 && event.deepValue * 1000 <= 999999 * 1000
         })
-        }else{
-        isEvery = true;
-        deepIsEvery = true;
-        this.ocpxActionTypeArray = [];
-        this.depthArray = [];
-        }
+       
         // let isEvery = this.ocpxActionTypeArray.every((item, i) => {
         //   return "maxValue" in item && item.maxValue != "" && item.maxValue * 1000 >= 0 && item.maxValue * 1000 <= 999999 * 1000
         // })
@@ -612,6 +746,10 @@
                 // formData.ocpxActionType =
                 //   formData.bidType == 2 ? JSON.stringify([0]) : JSON.stringify(formData.ocpxActionType)
                 formData.bidType = JSON.stringify(formData.bidType)
+              }else{
+              
+                formData.bidType = '[]'
+              
               }
               this.ocpxActionTypeArray.forEach(element => {
                 if (element.maxValue) {
@@ -663,11 +801,46 @@
         this.resId = key
       },
       getOcpxList() {
-        this.getAction('/ocpx/kuaiShouOcpxActionTypeConfig/list').then((res) => {
-          if (res.success) {
-            this.ocpxList = res.result
-          }
-        })
+
+        if(this.model.mediaId == '1' ||this.model.mediaId == '3'||this.model.mediaId == '5' ){
+           this.getAction('/ocpx/kuaiShouOcpxActionTypeConfig/bytedanceList').then((res) => {
+            if (res.success) {
+              this.ocpxList = res.result;
+            }
+           })
+        }else{
+          this.getAction('/ocpx/kuaiShouOcpxActionTypeConfig/list').then((res) => {
+            if (res.success) {
+              this.ocpxList = res.result;
+              //     this.ocpxActionTypeArray = [];
+              //     this.model.ocpxActionType.forEach(element => {
+              //    this.ocpxList.find((par)=>{
+              //   if (par.ocpxActionType == element) {
+              //    this.ocpxActionTypeArray.push({ocpxCode:par.ocpxActionType,ocpxName:par.ocpxActionName});
+              //   } 
+              // })
+              // });
+              // if (this.model.deepConversionType) {
+              //    this.depthArray = [];
+              // this.model.deepConversionType.forEach(element => {
+              //    this.depthList.find((par)=>{
+              //   if (par.value == element) {
+              //    this.depthArray.push({deepCode:par.value,deepName:par.name})
+              //   }
+
+              // })
+              // });
+              // } 
+
+
+            }
+          })
+        }
+        // this.getAction('/ocpx/kuaiShouOcpxActionTypeConfig/list').then((res) => {
+        //   if (res.success) {
+        //     this.ocpxList = res.result
+        //   }
+        // })
       },
     },
   }

+ 46 - 26
src/views/modules/material/selectionLibrary.vue

@@ -300,7 +300,12 @@
                 />
                 <a-checkbox-group v-model="checkVideo" style="width: 100%" @change="setVideoDataAll">
                     <div class="card-person-drawer info-detail" style="height: 500px; overflow: auto">
-                        <a-card class="card-person card-item" v-for="(item, index) in dataVideoList" :key="index">
+                        <a-card
+                            class="card-person card-item"
+                            v-for="(item, index) in dataVideoList"
+                            :key="index"
+                            v-show="item.showCard"
+                        >
                             <div slot="title" style="overflow: hidden; text-overflow: ellipsis; white-space: nowrap">
                                 {{ item.materialName }}
                             </div>
@@ -569,13 +574,23 @@ export default {
     },
     methods: {
         onSearch() {
-            if (!this.searchVideo) {
-                this.dataVideoList = this.searchVideoList
-            } else {
-                this.dataVideoList = this.searchVideoList.filter((item) => {
-                    return item.materialName.includes(this.searchVideo)
-                })
-            }
+            this.$nextTick(() => {
+                if (!this.searchVideo) {
+                    this.dataVideoList = this.dataVideoList.map((item) => {
+                        return {
+                            ...item,
+                            showCard: true,
+                        }
+                    })
+                } else {
+                    this.dataVideoList = this.dataVideoList.map((item) => {
+                        return {
+                            ...item,
+                            showCard: item.materialName.includes(this.searchVideo) ? true : false,
+                        }
+                    })
+                }
+            })
         },
         exportPolicy() {
             this.exportPolicyLoading = true
@@ -742,11 +757,12 @@ export default {
                     } else {
                         if (lastVideoUrlArr[0] != '') {
                             for (let i = 0; i < lastVideoUrlArr.length; i++) {
-                                const fileStrArr = lastVideoUrlArr[i].split('.')
-                                const suffix = fileStrArr[fileStrArr.length - 1]
-                                let result = fileSuffix.some((item) => {
-                                    return item === suffix
-                                })
+                                let result = lastVideoUrlArr[i].includes('.mp4')
+                                // const fileStrArr = lastVideoUrlArr[i].split('.')
+                                // const suffix = fileStrArr[fileStrArr.length - 1]
+                                // let result = fileSuffix.some((item) => {
+                                //     return item === suffix
+                                // })
                                 if (!result) {
                                     this.$message.error('请填写正确视频链接')
                                     return false
@@ -865,6 +881,7 @@ export default {
                 }
 
                 this.materialVisible = false
+                this.searchVideo = undefined
             })
         },
         selectMaterial(index) {
@@ -878,7 +895,12 @@ export default {
                         // this.ipaginationVideo.current = 1
 
                         this.materialVisible = true
-                        this.dataVideoList = res.result.list
+                        this.dataVideoList = res.result.list.map((item) => {
+                            return {
+                                ...item,
+                                showCard: true,
+                            }
+                        })
                         this.searchVideoList = res.result.list
                         // this.ipaginationVideo.total = res.result.total
                     } else {
@@ -894,18 +916,16 @@ export default {
         setVideoDataAll(data) {
             //  checkPerson: [],
             // checkPersonAll: [],
-            this.$nextTick(() => {
-                if (data.findIndex((item) => item === this.checkPersonOne) > -1) {
-                    this.checkPersonElse.push(...data)
-                    this.checkPersonElse = [...new Set(this.checkPersonElse)]
-                } else {
-                    this.checkPersonElse.splice(
-                        this.checkPersonElse.findIndex((item) => item === this.checkPersonOne),
-                        1
-                    )
-                }
-                this.checkVideo = this.checkPersonElse
-            })
+            if (data.findIndex((item) => item === this.checkPersonOne) > -1) {
+                this.checkPersonElse.push(...data)
+                this.checkPersonElse = [...new Set(this.checkPersonElse)]
+            } else {
+                // data.findIndex((item) => item === this.checkPersonOne) > -1
+                this.checkPersonElse.splice(
+                    this.checkPersonElse.findIndex((item) => item === this.checkPersonOne),
+                    1
+                )
+            }
         },
         addVideoArr() {
             this.videoArr.push({

+ 1 - 1
src/views/modules/stockWatch/modules/new-keepManage/group-keepManage.vue

@@ -1251,7 +1251,7 @@ export default {
                             }
                         }
                     } else {
-                        this.changeColumn()
+                        this.changeColumn(this.columnsProject)
                     }
                 }
             })