Selaa lähdekoodia

3-30日发版

朱鑫波 3 vuotta sitten
vanhempi
commit
ee8008f417

+ 16 - 147
src/views/dashboard/Analysis.vue

@@ -71,165 +71,27 @@
 <template>
   <div class="page-header-index-wide analysis">
     <!--  -->
-    <div v-if="roleCode == 'operator'">
-      <a-row :gutter="24">
-        <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
-          <chart-card :loading="loading" title="总销售额" total="¥126,560">
-            <a-tooltip title="指标说明" slot="action">
-              <a-icon type="info-circle-o" />
-            </a-tooltip>
-            <div>
-              <trend flag="up" style="margin-right: 16px;">
-                <span slot="term">周同比</span>
-                12%
-              </trend>
-              <trend flag="down">
-                <span slot="term">日同比</span>
-                11%
-              </trend>
-            </div>
-            <template slot="footer">
-              日均销售额
-              <span>¥ 234.56</span>
-            </template>
-          </chart-card>
-        </a-col>
-        <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
-          <chart-card :loading="loading" title="访问量" :total="8846 | NumberFormat">
-            <a-tooltip title="指标说明" slot="action">
-              <a-icon type="info-circle-o" />
-            </a-tooltip>
-            <div>
-              <mini-area />
-            </div>
-            <template slot="footer">
-              日访问量
-              <span>{{ '1234' | NumberFormat }}</span>
-            </template>
-          </chart-card>
-        </a-col>
-        <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
-          <chart-card :loading="loading" title="支付笔数" :total="6560 | NumberFormat">
-            <a-tooltip title="指标说明" slot="action">
-              <a-icon type="info-circle-o" />
-            </a-tooltip>
-            <div>
-              <mini-bar :height="40" />
-            </div>
-            <template slot="footer">
-              转化率
-              <span>60%</span>
-            </template>
-          </chart-card>
-        </a-col>
-        <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
-          <chart-card :loading="loading" title="运营活动效果" total="78%">
-            <a-tooltip title="指标说明" slot="action">
-              <a-icon type="info-circle-o" />
-            </a-tooltip>
-            <div>
-              <mini-progress color="rgb(19, 194, 194)" :target="80" :percentage="78" :height="8" />
-            </div>
-            <template slot="footer">
-              <trend flag="down" style="margin-right: 16px;">
-                <span slot="term">同周比</span>
-                12%
-              </trend>
-              <trend flag="up">
-                <span slot="term">日环比</span>
-                80%
-              </trend>
-            </template>
-          </chart-card>
-        </a-col>
-      </a-row>
 
-      <a-card :loading="loading" :bordered="false" :body-style="{ padding: '0' }">
-        <div class="salesCard">
-          <a-tabs default-active-key="1" size="large" :tab-bar-style="{ marginBottom: '24px', paddingLeft: '16px' }">
-            <div class="extra-wrapper" slot="tabBarExtraContent">
-              <div class="extra-item">
-                <a>今日</a>
-                <a>本周</a>
-                <a>本月</a>
-                <a>本年</a>
-              </div>
-              <a-range-picker :style="{ width: '256px' }" />
-            </div>
-            <a-tab-pane loading="true" tab="销售额" key="1">
-              <a-row>
-                <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24">
-                  <bar title="销售额排行" :dataSource="barData" />
-                </a-col>
-                <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24">
-                  <rank-list title="门店销售排行榜" :list="rankList" />
-                </a-col>
-              </a-row>
-            </a-tab-pane>
-            <a-tab-pane tab="访问量" key="2">
-              <a-row>
-                <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24">
-                  <bar title="销售额趋势" :dataSource="barData" />
-                </a-col>
-                <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24">
-                  <rank-list title="门店销售排行榜" :list="rankList" />
-                </a-col>
-              </a-row>
-            </a-tab-pane>
-          </a-tabs>
-        </div>
-      </a-card>
-
-      <a-row>
-        <a-col :span="24">
-          <a-card :loading="loading" :bordered="false" title="最近一周访问次数统计" :style="{ marginTop: '24px' }">
-            <a-row>
-              <a-col :span="6">
-                <head-info title="今日访问IP数" :content="loginfo.todayIp"></head-info>
-              </a-col>
-              <a-col :span="2">
-                <a-spin class="circle-cust">
-                  <a-icon slot="indicator" type="environment" style="font-size: 24px" />
-                </a-spin>
-              </a-col>
-              <a-col :span="6">
-                <head-info title="今日访问次数" :content="loginfo.todayVisitCount"></head-info>
-              </a-col>
-              <a-col :span="2">
-                <a-spin class="circle-cust">
-                  <a-icon slot="indicator" type="team" style="font-size: 24px" />
-                </a-spin>
-              </a-col>
-              <a-col :span="6">
-                <head-info title="访问总次数" :content="loginfo.totalVisitCount"></head-info>
-              </a-col>
-              <a-col :span="2">
-                <a-spin class="circle-cust">
-                  <a-icon slot="indicator" type="rise" style="font-size: 24px" />
-                </a-spin>
-              </a-col>
-            </a-row>
-            <line-chart-multid :fields="visitFields" :dataSource="visitInfo"></line-chart-multid>
-          </a-card>
-        </a-col>
-      </a-row>
-    </div>
+    <operateStatistics v-if="roleCode == 'operator' || roleCode == 'operationAssistant'"/>
     <managerStatistics v-else-if="userInfoId || roleCode == 'CompanyManager'"/>
-    <newHome v-else-if=" roleCode == 'touTiaoOperationManager'" />
-    <statistics v-else-if="roleCode == 'kuaishouOperationManager'" />
+    <groupKeepManage v-else-if="roleCode == 'kuaishouOperationManager'||roleCode == 'kuaishouDirector'"/>
+    <newHome v-else-if=" roleCode == 'touTiaoOperationManager'||roleCode == 'bytedanceDirector'" />
+    <!-- <newHome v-else-if=" roleCode == 'touTiaoOperationManager'" />
+    <statistics v-else-if="roleCode == 'kuaishouOperationManager'" /> -->
     <statistics v-else-if="roleCode == 'sale'||roleCode=='saleDirector'" />
 
     <Workbench v-else-if="roleCode == 'clip'" />
     <Workbench v-else-if="roleCode == 'plane'" />
 
-    <!-- <a-tabs default-active-key="1" v-else-if="roleCode == 'admin'" class="only-there">
+    <a-tabs default-active-key="1" v-else-if="roleCode == 'salesSupportManager'||roleCode == 'saleAm'||roleCode == 'saleDirector'||
+    roleCode == 'sale'" class="only-there">
       <a-tab-pane key="1" tab="快手">
         <statistics />
       </a-tab-pane>
       <a-tab-pane key="2" tab="头条">
         <newHome />
       </a-tab-pane>
-    </a-tabs> -->
+    </a-tabs>
 
     <!-- 更新公告 -->
     <a-modal v-model="visible" title="" @ok="handleOk" :closable='false' :footer="null" id="updateInfo">
@@ -286,6 +148,8 @@
   import { mapActions, mapGetters } from 'vuex'
   import Trend from '@/components/Trend'
   import managerStatistics from './managerStatistics'
+  import operateStatistics from '@/views/modules/stockWatch/modules/new-keepManage/personal-keepManage.vue'
+  import groupKeepManage from '@/views/modules/stockWatch/modules/new-keepManage/group-keepManage.vue'
   import {
     getLoginfo,
     getVisitInfo
@@ -324,7 +188,9 @@
       newHome,
       Workbench,
       Statistics,
-      managerStatistics
+      managerStatistics,
+      operateStatistics,
+      groupKeepManage
     },
     data() {
       return {
@@ -348,6 +214,9 @@
         this.loading = !this.loading
       }, 1000)
       this.initLogInfo()
+      if(this.roleCode == 'operator'||this.roleCode == 'operationAssistant'){
+        sessionStorage.setItem('personalUserId', this.userInfo().id)
+      }
     },
 
     methods: {

+ 12 - 5
src/views/modules/Statistics/KSAccountReport.vue

@@ -41,9 +41,9 @@
               <a-input-number :min="0.1" :max="10" :step="0.1" v-model="rebateProp" :disabled="rebatePropDisabled" @change="rebatePropChange" />
           </div>
           <div class="btn">
-            <a-button type="primary" @click="searchgetData" :disabled='searchDisabled' class="mybtn">查询</a-button>
+            <a-button type="primary" @click="searchgetData" class="mybtn">查询</a-button>
            
-            <a-button type="primary" @click="resetgetData" :disabled='resetDisabled' class="mybtn">重置</a-button>
+            <a-button type="primary" @click="resetgetData" class="mybtn">重置</a-button>
           </div>
       </div>
       
@@ -1248,7 +1248,7 @@ export default {
     changeColumn(val){
         this.columns=[...val];
         this.columns=[...val];
-        if(this.columns.length> this.columnsFixd.length&&this.columns.length<8){
+        if(this.columns.length> this.columnsFixd.length&&this.columns.length<=this.columnsFixd.length){
           this.columns.forEach((element,index) => {
             if(index<this.columns.length-1){
               element.width='auto'
@@ -1257,10 +1257,10 @@ export default {
           });
 
           // this.scrollX=2000+200*(this.columns.length-this.columnsFixd.length)
-        }else if(this.columns.length>=8){
+        }else if(this.columns.length>this.columnsFixd.length){
           this.columns.forEach((element,index) => {
             if(index<this.columnsFixd.length){
-              element.width=200
+              element.width=250
               element.fixed='left'
             }             
           });
@@ -1273,6 +1273,13 @@ export default {
               element.fixed=false
           });
         }
+        let arr = JSON.stringify(this.columns)
+        postAction('/toutiao/videoReportDaily/saveOrUpdateColumnJson', {
+          json: arr,
+          columnType: 2
+        }).then(res => {
+          // console.log(res)
+        })
     },
     tableHandle() {
         // this.listNum = [...this.columns]

+ 10 - 3
src/views/modules/Statistics/accountReport.vue

@@ -1171,7 +1171,7 @@ export default {
     changeColumn(val){
       console.log(val)
         this.columns=[...val];
-        if(this.columns.length> this.columnsFixd.length&&this.columns.length<8){
+        if(this.columns.length> this.columnsFixd.length&&this.columns.length<=this.columnsFixd.length){
           this.columns.forEach((element,index) => {
             if(index<this.columns.length-1){
               element.width='auto'
@@ -1180,10 +1180,10 @@ export default {
           });
 
           // this.scrollX=2000+200*(this.columns.length-this.columnsFixd.length)
-        }else if(this.columns.length>=8){
+        }else if(this.columns.length>this.columnsFixd.length){
           this.columns.forEach((element,index) => {
             if(index<this.columnsFixd.length){
-              element.width=200
+              element.width=300
               element.fixed='left'
             }             
           });
@@ -1196,6 +1196,13 @@ export default {
               element.fixed=false
           });
         }
+        let arr = JSON.stringify(this.columns)
+        postAction('/toutiao/videoReportDaily/saveOrUpdateColumnJson', {
+          json: arr,
+          columnType: 1
+        }).then(res => {
+          // console.log(res)
+        })
     },
     tableHandle() {
         // this.listNum = [...this.columns]

+ 5 - 0
src/views/modules/Statistics/components/datePick.vue

@@ -186,8 +186,13 @@ export default {
 <style lang="scss" scoped>
 .datePicker {
   position: relative;
+  display: flex;
   p{
       margin-bottom: 0;
+      width: 50px;
+      height: 30px;
+      text-align: center;
+      line-height: 30px;
   }
   .pickOptions {
     width: 100px;

+ 4 - 0
src/views/modules/Statistics/kuaishouReport/accountReport.vue

@@ -3,6 +3,10 @@
 ::v-deep.vue-treeselect__control {
     line-height: 20px !important;
 }
+::v-deep .table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control {
+    height: auto !important;
+    line-height: 20px !important;
+}
 </style>
 <template>
     <div class="account-report">

+ 8 - 4
src/views/modules/Statistics/kuaishouReport/videoReport.vue

@@ -3,6 +3,10 @@
 ::v-deep.vue-treeselect__control {
     line-height: 20px !important;
 }
+::v-deep .table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control {
+    height: auto !important;
+    line-height: 20px !important;
+}
 </style>
 <template>
     <div class="video-report">
@@ -15,7 +19,7 @@
                                 <selectTreeAccount
                                     v-decorator="['accountIds', { initialValue: [] }]"
                                     multiple
-                                    style="display: inline-block;position: relative;margin-left: 0px;width:100%;margin-bottom:15px"
+                                    style="display: inline-block;position: relative;margin-left: 0px;width:100%;"
                                     :limit="1"
                                 />
                             </a-form-item>
@@ -685,7 +689,7 @@ export default {
                 startDate: this.dateValue[0].format('YYYY-MM-DD'),
                 endDate: this.dateValue[1].format('YYYY-MM-DD'),
                 signature: record.signature,
-                accountIds: this.appId
+                accountIds: this.getFormData('accountIds')
             }).then(res => {
                 // console.log(res)
                 this.detailLoading = false
@@ -822,7 +826,7 @@ export default {
                 endDate: this.dateValue[1].format('YYYY-MM-DD'),
                 pageNo: this.ipagination.current,
                 pageSize: this.ipagination.pageSize,
-                accountIds: this.appId,
+                accountIds: this.getFormData('accountIds'),
                 target: this.target,
                 order: this.order,
                 clipId: this.clip ? this.clip : '',
@@ -871,7 +875,7 @@ export default {
                 order: this.order,
                 startDate: this.dateValue[0].format('YYYY-MM-DD'),
                 endDate: this.dateValue[1].format('YYYY-MM-DD'),
-                accountIds: this.appId,
+                accountIds: this.getFormData('accountIds'),
                 exportType,
                 signature: this.signature,
                 clipId: this.clip ? this.clip : '',

+ 23 - 1
src/views/modules/autoLaunchRevision/createLaunch.vue

@@ -338,6 +338,27 @@ li.chouzhen.first:before {
                                     </a-form-item>
                                 </a-col>
                             </a-row>
+                            <a-row :gutter="16">
+                                <a-col :span="16">
+                                    <a-form-item label="是否使用优质定向">
+                                        <a-radio-group
+                                            button-style="solid"
+                                            v-decorator="[
+                                                'systemOptimization',
+                                                {
+                                                    rules: [{ required: true, message: '是否使用优质定向必选' }],
+                                                    initialValue: 0
+                                                }
+                                            ]"
+                                        >
+                                            <a-radio-button :value="0">关闭</a-radio-button>
+                                            <a-radio-button :value="1">开启</a-radio-button>
+                                        </a-radio-group>
+                                    </a-form-item>
+                                </a-col>
+                            </a-row>
+
+                            
                         </a-form>
                     </a-card>
                     <a-card class="search-box step-jump" title="优化目标">
@@ -3431,7 +3452,8 @@ export default {
                     })
                     this.$nextTick(() => {
                         let data = res.result
-                        this.formProject.setFieldsValue(pick(data, 'campaignType', 'accountId','intentionTarget'))
+                        data.systemOptimization = data.systemOptimization ? data.systemOptimization : 0
+                        this.formProject.setFieldsValue(pick(data, 'campaignType', 'accountId','intentionTarget','systemOptimization'))
 
                         this.formInformaData = {
                             budgetType: data.campaignDayBudget ? '2' : '1',

+ 16 - 3
src/views/modules/columnConst/accountConst.js

@@ -11,7 +11,6 @@ export const TTcustomFields= [
         {
           title: '消耗',
           dataIndex: 'cost',
-          width:150,
           tip: '表示广告在投放期内的预估花费金额。当天数据可能会有波动,次日稳定',
           align: 'center',
           scopedSlots: { customRender: 'cost' },
@@ -901,7 +900,6 @@ export const KScustomFields= [
         {
           title: '消耗(元)',
           dataIndex: 'cost',
-          width:150,
           tip: '广告在投放期间的花费总额',
           align: 'center',
           scopedSlots: { customRender: 'cost' },
@@ -993,7 +991,6 @@ export const KScustomFields= [
         {
           title: '安卓下载开始数',
           dataIndex: 'downloadStart',
-          width:150,
           tip: '安卓端调起下载器并开始下载的次数',
           align: 'center',
           scopedSlots: { customRender: 'downloadStart' },
@@ -1226,6 +1223,22 @@ export const KScustomFields= [
           scopedSlots: { customRender: 'play3sRate' },
           sorter:() => {}
         },
+        {
+          title: '关键行为数',
+          dataIndex: 'keyAction',
+          // tip: '3s播放数/素材曝光数',
+          align: 'center',    
+          scopedSlots: { customRender: 'keyAction' },
+          sorter:() => {}
+        },
+        {
+          title: '关键行为成本',
+          dataIndex: 'keyActionCost',
+          // tip: '3s播放数/素材曝光数',
+          align: 'center',    
+          scopedSlots: { customRender: 'keyActionCost' },
+          sorter:() => {}
+        },
       ]
     },
     {

+ 1 - 0
src/views/modules/kuaishouapp/batchCreation/creat/creatUnit.vue

@@ -358,6 +358,7 @@
             { label: '优选广告位', value: 1 },
             { label: '上下滑大屏广告', value: 6 },
             { label: '视频播放页广告', value: 3 },
+            { label: '激励视频广告位', value: 24 },
           ]"
           v-model="allForm.sceneId"
           @change="changeData"

+ 1 - 1
src/views/modules/material/videoMaterial.vue

@@ -1052,7 +1052,7 @@ a {
             :value.sync="ruleForm.urlList"
             @overUpload="ruleFormOverUpload"
             @removeUpload="ruleFormRemoveUpload"
-            :fileCount="10"
+            :fileCount="20"
             :sizeCheck="true"
             uploadType="video"
             :multiple="true"

+ 8 - 10
src/views/modules/stockWatch/modules/new-keepManage/acountProjectData.js

@@ -11,7 +11,6 @@ export const TTcustomFields= [
         {
           title: '消耗',
           dataIndex: 'cost',
-          width:150,
           tip: '表示广告在投放期内的预估花费金额。当天数据可能会有波动,次日稳定',
           align: 'center',
           scopedSlots: { customRender: 'cost' },
@@ -901,7 +900,6 @@ export const KScustomFields= [
         {
           title: '消耗(元)',
           dataIndex: 'totalCost',
-          width:150,
           tip: '广告在投放期间的花费总额',
           align: 'center',
           scopedSlots: { customRender: 'totalCost' },
@@ -909,7 +907,6 @@ export const KScustomFields= [
         },{
             title: '激活数',
             dataIndex: 'activation',
-            width:150,
             tip: '广告主回传的应用激活次数',
             align: 'center',
             scopedSlots: { customRender: 'activation' },
@@ -917,7 +914,6 @@ export const KScustomFields= [
           },{
             title: '激活单价',
             dataIndex: 'activationPrice',
-            width:150,
             tip: '花费/激活数',
             align: 'center',
             scopedSlots: { customRender: 'activationPrice' },
@@ -1051,6 +1047,14 @@ export const KScustomFields= [
                 scopedSlots: { customRender: 'formCountPrice' },
                 sorter: (a, b) => a.formCountPrice - b.formCountPrice,
               },
+              {
+                title: '有效素材数',
+                dataIndex: 'newEffectNum',
+                tip: '',
+                align: 'center',
+                scopedSlots: { customRender: 'newEffectNum' },
+                sorter: (a, b) => a.newEffectNum - b.newEffectNum,
+            },
 
 
 
@@ -1071,7 +1075,6 @@ export const KScustomFields= [
         {
           title: '消耗(元)',
           dataIndex: 'charge',
-          width:150,
           tip: '广告在投放期间的花费总额',
           align: 'center',
           scopedSlots: { customRender: 'charge' },
@@ -1079,7 +1082,6 @@ export const KScustomFields= [
         },{
             title: '激活数',
             dataIndex: 'activation',
-            width:150,
             tip: '广告主回传的应用激活次数',
             align: 'center',
             scopedSlots: { customRender: 'activation' },
@@ -1087,7 +1089,6 @@ export const KScustomFields= [
           },{
             title: '激活单价',
             dataIndex: 'activationPrice',
-            width:150,
             tip: '花费/激活数',
             align: 'center',
             scopedSlots: { customRender: 'activationPrice' },
@@ -1242,7 +1243,6 @@ export const KScustomFields= [
         {
           title: '消耗(元)',
           dataIndex: 'cost',
-          width:150,
           tip: '广告在投放期间的花费总额',
           align: 'center',
           scopedSlots: { customRender: 'cost' },
@@ -1250,7 +1250,6 @@ export const KScustomFields= [
         },{
             title: '激活数',
             dataIndex: 'activation',
-            width:150,
             tip: '广告主回传的应用激活次数',
             align: 'center',
             scopedSlots: { customRender: 'activation' },
@@ -1258,7 +1257,6 @@ export const KScustomFields= [
           },{
             title: '激活单价',
             dataIndex: 'activationPrice',
-            width:150,
             tip: '花费/激活数',
             align: 'center',
             scopedSlots: { customRender: 'activationPrice' },

+ 244 - 249
src/views/modules/stockWatch/modules/new-keepManage/customColumnProject.vue

@@ -1,26 +1,25 @@
 <template>
     <div class="customColumnKS">
-      <a-modal v-model="visibleOk" title="自定义列" on-ok="handleOk" @cancel="handleCancel" width="65%">
-        <template slot="footer">
-          <a-button key="back" @click="handleCancel">取消</a-button>
-          <a-button key="submit" type="primary" :loading="loading" @click="handleOk">应用</a-button>
-        </template>
-        <!-- <a-input-search placeholder="输入要添加的列的名称" style="width: 40%" enter-button @search="onSearch" /> -->
-        <div class="zhuti">
-          <div class="addlist">
-            <p>可添加的列</p>
-            <div class="selectionList">
-              <!--  v-for="(item,index) in addColumns" :key="index" -->
-              <!-- <div v-if="mediaType==1"> -->
-                <selectComponent
-                :showCol="mylistNum"
-                @getshowlist="getshowlist"
-                :fixedCol="fiexColumn"
-                :mediaType='mediaType'
-                
-                />
-              <!-- </div> -->
-              <!-- <div v-if="mediaType==2">
+        <a-modal v-model="visibleOk" title="自定义列" on-ok="handleOk" @cancel="handleCancel" width="65%">
+            <template slot="footer">
+                <a-button key="back" @click="handleCancel">取消</a-button>
+                <a-button key="submit" type="primary" :loading="loading" @click="handleOk">应用</a-button>
+            </template>
+            <!-- <a-input-search placeholder="输入要添加的列的名称" style="width: 40%" enter-button @search="onSearch" /> -->
+            <div class="zhuti">
+                <div class="addlist">
+                    <p>可添加的列</p>
+                    <div class="selectionList">
+                        <!--  v-for="(item,index) in addColumns" :key="index" -->
+                        <!-- <div v-if="mediaType==1"> -->
+                        <selectComponent
+                            :showCol="mylistNum"
+                            @getshowlist="getshowlist"
+                            :fixedCol="fiexColumn"
+                            :mediaType="mediaType"
+                        />
+                        <!-- </div> -->
+                        <!-- <div v-if="mediaType==2">
                 <selectComponentKS
                 :showCol="mylistNum"
                 @getshowlist="getshowlist"
@@ -29,269 +28,265 @@
                 
               />
               </div> -->
-              
-            </div>
-          </div>
-          <div class="listNum">
-            <p>已选{{mylistNum.length}}列</p>
-            <a-button id="btn" type="link" @click="clearAllList">清空全部</a-button>
-            <ul class="selectlist">
-                  <!-- draggable="true"
+                    </div>
+                </div>
+                <div class="listNum">
+                    <p>已选{{ mylistNum.length }}列</p>
+                    <a-button id="btn" type="link" @click="clearAllList">清空全部</a-button>
+                    <ul class="selectlist">
+                        <!-- draggable="true"
                     @dragstart="handleDragStart($event, item.dataIndex)"
                     @dragover.prevent="handleDragOver($event, item.dataIndex)"
                     @dragenter="handleDragEnter($event, item.dataIndex)"
                     @dragend="handleDragEnd($event, item.dataIndex)" -->
-              <li v-for="(item,index) in mylistNum" :key="index">
-                <span v-if=" index < fiexColumn.length">
-                  <a-icon type="lock" />
-                  <span class="listText">{{item.title}}</span>
-                </span>
-                <span v-else-if=" index >=fiexColumn.length"  >
-                  <a-icon type="menu" style="color:#ccc" />
-                  <span class="listText">{{item.title}}</span>
-                  <a-icon
-                    type="close"
-                    @click="deleteCol(item,index)"
-                    id="closeStyle"
-                    style="fontSize:12px;"
-                  />
-                </span>
-              </li>
-            </ul>
-          </div>
-        </div>
-      </a-modal>
+                        <li v-for="(item, index) in mylistNum" :key="index">
+                            <span v-if="index < fiexColumn.length">
+                                <a-icon type="lock" />
+                                <span class="listText">{{ item.title }}</span>
+                            </span>
+                            <span v-else-if="index >= fiexColumn.length">
+                                <a-icon type="menu" style="color: #ccc" />
+                                <span class="listText">{{ item.title }}</span>
+                                <a-icon
+                                    type="close"
+                                    @click="deleteCol(item, index)"
+                                    id="closeStyle"
+                                    style="fontsize: 12px"
+                                />
+                            </span>
+                        </li>
+                    </ul>
+                </div>
+            </div>
+        </a-modal>
     </div>
-  </template>
-  
-  <script>
-  import selectComponent from './selectComponentPrject.vue'
-  export default {
+</template>
+
+<script>
+import selectComponent from './selectComponentPrject.vue'
+export default {
     components: {
-      selectComponent,
+        selectComponent,
     },
-    props: ['visible', 'listNum', 'fiexColumn','mediaType'],
-  
+    props: ['visible', 'listNum', 'fiexColumn', 'mediaType'],
+
     data() {
-      return {
-        dragging: null,
-        dataKey: 0,
-        visibleOk: false,
-        mylistNum: [],
-        loading: false
-      }
+        return {
+            dragging: null,
+            dataKey: 0,
+            visibleOk: false,
+            mylistNum: [],
+            loading: false,
+        }
     },
     watch: {
-      visible(n, o) {
-        // console.log(n,o)
-        this.visibleOk = this.visible
-      },
-      listNum: {
-        handler(newValue, oldValue) {
-          this.mylistNum = newValue
+        visible(n, o) {
+            console.log(n,o)
+            this.visibleOk = this.visible
+        },
+        listNum: {
+            handler(newValue, oldValue) {
+              console.log(newValue)
+                this.mylistNum = newValue
+            },
+            immediate: true,
+            // deep: true
         },
-        immediate: true
-        // deep: true
-      }
     },
     methods: {
-       //li展示里的关闭按钮 删除当前被选中的这一个列
-      deleteCol(item, index) {
-        this.mylistNum = this.mylistNum.filter((item1, num) => {
-          return num != index
-        })
-      },
-      handleDragStart(e, item) {
-        this.dragging = item
-      },
-      handleDragEnd(e, item) {
-        this.dragging = null
-      },
-      //首先把div变成可以放置的元素,即重写dragenter/dragover
-      handleDragOver(e) {
-        e.dataTransfer.dropEffect = 'move' // e.dataTransfer.dropEffect="move";//在dragenter中针对放置目标来设置!
-      },
-      handleDragEnter(e, item) {
-        e.dataTransfer.effectAllowed = 'move' //为需要移动的元素设置dragstart事件
-        if (item === this.dragging) {
-          return
-        }
-        const newItems = [...this.mylistNum]
-        const src = newItems.findIndex(v => v.dataIndex === this.dragging)
-        const dst = newItems.findIndex(v => v.dataIndex === item)
-  
-        newItems.splice(dst, 0, ...newItems.splice(src, 1))
-  
-        this.mylistNum = newItems
-      },
-      //弹出框确定
-      handleOk(e) {
-        this.loading = false
-        this.visibleOk = false
-        this.$emit('closeCustomColumn', false)
-        this.$emit('changeColumn', this.mylistNum)
-        this.$emit('changeColumnIndex',this.mylistNum)
-      },
-      //取消按钮
-      handleCancel() {
-        this.visibleOk = false
-        this.$emit('closeCustomColumn', false)
-      },
-      //清空全部
-      clearAllList() {
-        this.mylistNum = [...this.fiexColumn]
-      },
-      //从自定义列拿选择的项
-      getshowlist(val) {
-        var arr = []
-  
-        // console.log(val)
-        if (val.length) {
-          if (val.flag) {
-            let newArr = val.arr
-            newVal.map((item, index) => {
-              // if(JSON.stringify(this.listNum).indexOf(JSON.stringify(item))==-1){
-              //  this.listNum.push(item); // 进行动态的操作
-              // }
-              var result = this.listNum.some(items => {
-                if (items.dataIndex == item.dataIndex) {
-                  return true
-                }
-              })
-  
-              // console.log(result)
-              if (result) {
-                newArr.splice(index, 1)
-              }
+        //li展示里的关闭按钮 删除当前被选中的这一个列
+        deleteCol(item, index) {
+            this.mylistNum = this.mylistNum.filter((item1, num) => {
+                return num != index
             })
-  
-            this.mylistNum = [...this.mylistNum, ...newArr]
-          } else {
-            //取消全选  清楚listNum中的val里的值
-            val.arr.map((item, index) => {
-              var result = this.mylistNum.some(items => {
-                if (items.dataIndex == item.dataIndex) {
-                  return true
+        },
+        handleDragStart(e, item) {
+            this.dragging = item
+        },
+        handleDragEnd(e, item) {
+            this.dragging = null
+        },
+        //首先把div变成可以放置的元素,即重写dragenter/dragover
+        handleDragOver(e) {
+            e.dataTransfer.dropEffect = 'move' // e.dataTransfer.dropEffect="move";//在dragenter中针对放置目标来设置!
+        },
+        handleDragEnter(e, item) {
+            e.dataTransfer.effectAllowed = 'move' //为需要移动的元素设置dragstart事件
+            if (item === this.dragging) {
+                return
+            }
+            const newItems = [...this.mylistNum]
+            const src = newItems.findIndex((v) => v.dataIndex === this.dragging)
+            const dst = newItems.findIndex((v) => v.dataIndex === item)
+
+            newItems.splice(dst, 0, ...newItems.splice(src, 1))
+
+            this.mylistNum = newItems
+        },
+        //弹出框确定
+        handleOk(e) {
+            this.loading = false
+            this.visibleOk = false
+            this.$emit('closeCustomColumn', false)
+            this.$emit('changeColumn', this.mylistNum)
+            this.$emit('changeColumnIndex', this.mylistNum)
+        },
+        //取消按钮
+        handleCancel() {
+            this.visibleOk = false
+            this.$emit('closeCustomColumn', false)
+        },
+        //清空全部
+        clearAllList() {
+            this.mylistNum = [...this.fiexColumn]
+        },
+        //从自定义列拿选择的项
+        getshowlist(val) {
+            var arr = []
+
+            // console.log(val)
+            if (val.length) {
+                if (val.flag) {
+                    let newArr = val.arr
+                    newVal.map((item, index) => {
+                        // if(JSON.stringify(this.listNum).indexOf(JSON.stringify(item))==-1){
+                        //  this.listNum.push(item); // 进行动态的操作
+                        // }
+                        var result = this.listNum.some((items) => {
+                            if (items.dataIndex == item.dataIndex) {
+                                return true
+                            }
+                        })
+
+                        // console.log(result)
+                        if (result) {
+                            newArr.splice(index, 1)
+                        }
+                    })
+
+                    this.mylistNum = [...this.mylistNum, ...newArr]
+                } else {
+                    //取消全选  清楚listNum中的val里的值
+                    val.arr.map((item, index) => {
+                        var result = this.mylistNum.some((items) => {
+                            if (items.dataIndex == item.dataIndex) {
+                                return true
+                            }
+                        })
+                        // console.log(result)
+                        if (result) {
+                            this.mylistNum.splice(index, 1)
+                        }
+                    })
                 }
-              })
-              // console.log(result)
-              if (result) {
+            } else {
+                arr = this.mylistNum.filter((item, index) => {
+                    return item.dataIndex == val.dataIndex
+                })
+            }
+            if (arr.length) {
+                var index
+                this.mylistNum.map((item, ind) => {
+                    if (item.dataIndex == val.dataIndex) {
+                        index = ind
+                    }
+                })
                 this.mylistNum.splice(index, 1)
-              }
-            })
-          }
-        } else {
-          arr = this.mylistNum.filter((item, index) => {
-            return item.dataIndex == val.dataIndex
-          })
-        }
-        if (arr.length) {
-          var index
-          this.mylistNum.map((item, ind) => {
-            if (item.dataIndex == val.dataIndex) {
-              index = ind
+            } else {
+                this.mylistNum.push(val)
             }
-          })
-          this.mylistNum.splice(index, 1)
-        } else {
-          this.mylistNum.push(val)
-        }
-      }
+        },
     },
-    mounted() {
-    }
-  }
-  </script>
-  
-  <style lang="scss" scoped>
-  
-  
-  .addlist {
+    mounted() {},
+}
+</script>
+
+<style lang="scss" scoped>
+.addlist {
     float: left;
     width: 70%;
     border: 1px solid #eee;
     .selectionList {
-      padding: 10px 15px;
-      height: 450px;
-      overflow: auto;
-      .leibie {
-        .leiName {
-          font-size: 26px;
-          text-align: left;
+        padding: 10px 15px;
+        height: 450px;
+        overflow: auto;
+        .leibie {
+            .leiName {
+                font-size: 26px;
+                text-align: left;
+            }
+        }
+        .jutixiang {
+            display: inline-block;
+            width: 32%;
+            box-sizing: border-box;
+            padding: 10px 3px;
         }
-      }
-      .jutixiang {
-        display: inline-block;
-        width: 32%;
-        box-sizing: border-box;
-        padding: 10px 3px;
-      }
     }
-  }
-  .listNum {
+}
+.listNum {
     float: right;
     width: 28%;
     border: 1px solid #eee;
     position: relative;
-  }
-  .zhuti {
+}
+.zhuti {
     margin-top: 15px;
     overflow: hidden;
-  
+
     p {
-      height: 40px;
-      line-height: 20px;
-      padding: 10px 15px;
-  
-      background: rgb(249, 250, 253);
-      border-bottom: 1px solid #eee;
+        height: 40px;
+        line-height: 20px;
+        padding: 10px 15px;
+
+        background: rgb(249, 250, 253);
+        border-bottom: 1px solid #eee;
     }
     #btn {
-      position: absolute;
-      right: 0;
-      top: 5px;
+        position: absolute;
+        right: 0;
+        top: 5px;
     }
     .selectlist {
-      width: 100%;
-      list-style: none;
-      margin: 0;
-      height: 450px;
-      padding: 0 15px 10px;
-      overflow: auto;
-  
-      li {
         width: 100%;
-        padding: 5px 8px;
-        margin: 6px 0;
-        border-radius: 10px;
-        background: rgb(248, 248, 248);
-        height: 32px;
-        position: relative;
-        span {
-          width: 80%;
-          height: 100%;
-          display: inline-block;
-          margin: 0 10px;
-          // overflow:hidden;
-          // text-overflow:ellipsis;
-          // white-space: nowrap;
-        }
-        .listText {
-          position: absolute;
-          top: 2;
-          left: 10;
-          width: 60%;
-          overflow: hidden;
-          white-space: nowrap;
-          text-overflow: ellipsis;
-        }
-        #closeStyle {
-          position: absolute;
-          top: 9px;
-          right: 7px;
+        list-style: none;
+        margin: 0;
+        height: 450px;
+        padding: 0 15px 10px;
+        overflow: auto;
+
+        li {
+            width: 100%;
+            padding: 5px 8px;
+            margin: 6px 0;
+            border-radius: 10px;
+            background: rgb(248, 248, 248);
+            height: 32px;
+            position: relative;
+            span {
+                width: 80%;
+                height: 100%;
+                display: inline-block;
+                margin: 0 10px;
+                // overflow:hidden;
+                // text-overflow:ellipsis;
+                // white-space: nowrap;
+            }
+            .listText {
+                position: absolute;
+                top: 2;
+                left: 10;
+                width: 60%;
+                overflow: hidden;
+                white-space: nowrap;
+                text-overflow: ellipsis;
+            }
+            #closeStyle {
+                position: absolute;
+                top: 9px;
+                right: 7px;
+            }
         }
-      }
     }
-  }
-  
-  </style>
+}
+</style>

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

@@ -25,11 +25,11 @@
                     </div>
 
                     <div v-if="yestadyNum == 1" id="accountIndexEchart" ref="accountIndexEchart"
-                        style="width: 90%;height: 315px;margin: 0 auto;">
+                        style="width: 90%;height: 315px;margin: 0 auto;"  :style="{ width: clientWidth * 0.75 - 48 - 24 + 'px' }">
                         <a-empty />
                     </div>
 
-                    <div v-else id="acctowecharts" ref="acctowecharts" style="width: 90%;height: 315px;margin: 0 auto;">
+                    <div v-else id="acctowecharts" ref="acctowecharts" style="width: 90%;height: 315px;margin: 0 auto;"  :style="{ width: clientWidth * 0.75 - 48 - 24 + 'px' }">
                         <a-empty />
                     </div>
 
@@ -47,7 +47,7 @@
                             <li>
                                 今日消耗: <span style="font-weight: bold;">{{todayCost | formatNum}}</span>
                             </li>
-                            <li>
+                            <li v-if="!!compare">
                                 <span style="margin-left:20%;" v-if="compare.indexOf('-') == 0">
                                     <img style=" width: 25px;height: 25px;" class="title-radio-img"
                                         src="@/assets/greendown.png" alt="">
@@ -204,10 +204,10 @@
                 personData: -2,
                 dateMiddle: [moment(), moment()],
                 dateRanges: keepPersonData.setTimeRange(),
-                echartsDataoperate: [{}],
+                echartsDataoperate: [],
                 echartsLoadingYun: true,
                 echartsLoading: false,
-                echartsDataProject: [{}],
+                echartsDataProject: [],
                 projectAccount: 'a',
                 dateMiddleProject: [moment(), moment()],
                 echartsIpagination: {
@@ -270,7 +270,6 @@
                         title: '有效素材数',
                         align: "center",
                         dataIndex: 'newEffectNum',
-                        sorter: true,
                         sorter: (a, b) => a.newEffectNum - b.newEffectNum,
                         scopedSlots: { customRender: 'newEffectNum' },
                     }, {
@@ -390,6 +389,12 @@
             this.getOperationGroupData();
             this.getOperateDetails();
             this.getItemList();
+            this.clientWidth = document.documentElement.clientWidth - 224
+        },
+        activated() {
+            this.$nextTick(() => {
+                this.clientWidth = document.documentElement.clientWidth - 224
+            })
         },
         methods: {
             ...mapGetters(['userInfo']),
@@ -404,10 +409,11 @@
                     pageSize: this.echartsIpaginationProject.pageSize,
                 }
                 this.getAction(process.env.VUE_APP_BASE_STARE_URL + '/kuaiShouOpreate/kuaiShouMaterialStareController/getKuaiShouOperateProjectInfo', params).then(res => {
+                    this.echartsLoading = false;
                     if (res.code == 0) {
                         this.echartsDataProject = res.result.list;
                         this.echartsIpaginationProject.total = res.result.total;
-                        this.echartsLoading = false;
+                        
                     }
                 })
             },
@@ -444,10 +450,11 @@
                     projectId: this.projectId
                 }
                 this.getAction(process.env.VUE_APP_BASE_STARE_URL + '/kuaiShouOpreate/kuaiShouMaterialStareController/getKuaiShouOperateAccountInfo', params).then(res => {
+                    this.echartsLoading = false;
                     if (res.code == 0) {
                         this.echartsDataProject = res.result.list;
                         this.echartsIpaginationProject.total = res.result.total;
-                        this.echartsLoading = false;
+                        
                     }
                 })
             },
@@ -455,62 +462,67 @@
                 this.titleList = '账户列表'
                 this.columnsFixd = keepPersonData.setNoDeleteProjectColumns();
                 this.listNum = keepPersonData.setNoDeleteProjectColumns();
-                this.columnsProject = [
-                    {
-                        title: '账户名称',
-                        align: "center",
-                        dataIndex: 'accountName',
-                        scopedSlots: { customRender: 'accountName' },
-                    },{
-                        title: '账户ID',
-                        dataIndex: 'accountId',
-                        scopedSlots: { customRender: 'accountId' },
-                        align: 'center',
-                    }, {
-                        title: '运营人员名称',
-                        align: "center",
-                        dataIndex: 'userName'
-                    }, {
-                        title: '花费',
-                        align: "center",
-                        dataIndex: 'totalCost',
-                        sorter: (a, b) => a.totalCost - b.totalCost,
-                    }, {
-                        title: '花费环比',
-                        align: "center",
-                        dataIndex: 'yearOnYear',
-                    }, {
-                        title: '花费同比',
-                        align: "center",
-                        dataIndex: 'equallyRate',
-                    }, {
-                        title: '激活数',
-                        align: "center",
-                        dataIndex: 'activation',
-                    },
-                    {
-                        title: '激活单价',
-                        align: "center",
-                        dataIndex: 'activationPrice',
-                    }, {
-                        title: '行为数',
-                        align: "center",
-                        dataIndex: 'keyAction',
-                    }, {
-                        title: '封面曝光数',
-                        align: "center",
-                        dataIndex: 'photoShow',
-                    }, {
-                        title: '封面点击数',
-                        align: "center",
-                        dataIndex: 'photoClick',
-                    },
-                ],
+                // this.columnsProject = [
+                //     {
+                //         title: '账户名称',
+                //         align: "center",
+                //         dataIndex: 'accountName',
+                //         scopedSlots: { customRender: 'accountName' },
+                //     },{
+                //         title: '账户ID',
+                //         dataIndex: 'accountId',
+                //         scopedSlots: { customRender: 'accountId' },
+                //         align: 'center',
+                //     }, {
+                //         title: '运营人员名称',
+                //         align: "center",
+                //         dataIndex: 'userName'
+                //     }, {
+                //         title: '花费',
+                //         align: "center",
+                //         dataIndex: 'totalCost',
+                //         sorter: (a, b) => a.totalCost - b.totalCost,
+                //     }, {
+                //         title: '花费环比',
+                //         align: "center",
+                //         dataIndex: 'yearOnYear',
+                //     }, {
+                //         title: '花费同比',
+                //         align: "center",
+                //         dataIndex: 'equallyRate',
+                //     }, {
+                //         title: '激活数',
+                //         align: "center",
+                //         dataIndex: 'activation',
+                //     },
+                //     {
+                //         title: '激活单价',
+                //         align: "center",
+                //         dataIndex: 'activationPrice',
+                //     }, {
+                //         title: '行为数',
+                //         align: "center",
+                //         dataIndex: 'keyAction',
+                //     }, {
+                //         title: '封面曝光数',
+                //         align: "center",
+                //         dataIndex: 'photoShow',
+                //     }, {
+                //         title: '封面点击数',
+                //         align: "center",
+                //         dataIndex: 'photoClick',
+                //     },
+                // ],
                 this.projectAccount = 'b';
-                    this.projectId = row.projectId;
+                this.projectId = row.projectId;
                 this.echartsIpaginationProject.current = 1;
-                this.getAccountData();
                 this.showColumn();
+                this.$nextTick(()=>{
+                    this.echartsLoading = true;
+                    this.getAccountData();
+                })
+                
+
             },
             projectAccountChange(ent) {
                 this.echartsLoading = true;
@@ -569,7 +581,8 @@
                             dataIndex: 'activationPrice',
                         },
                     ],
-                        this.echartsIpaginationProject.current = 1;
+                    this.echartsIpaginationProject.current = 1;
+                    this.showColumn();
                     this.getItemList()
                 } else {
                     this.titleList = '账户列表'
@@ -628,10 +641,12 @@
                             dataIndex: 'photoClick',
                         },
                     ],
+                    this.showColumn();
                         this.echartsIpaginationProject.current = 1;
                     this.getAccountData();
                 }
-                this.showColumn();
+                this.projectAccount = ent.target.value
+                // this.showColumn();
             },
             accountNameClick(row) {
                 sessionStorage.setItem("personalaccountId",row.accountId)
@@ -1040,6 +1055,7 @@
             // 自定义列
             customColumn() {
                 this.visible = true;
+                console.log(this.columnsProject)
                 this.listNum = [...this.columnsProject]
             },
             //自定义列相关
@@ -1063,23 +1079,33 @@
                                             item.sorter = function (a, b) { }
                                         }
                                     })
-                                    columns = columns.slice(this.columnsFixd.length)
+                                    columns = columns.slice(this.columnsFixd.length-1)
                                     this.columnsProject = [...this.columnsFixd, ...columns]
-                                    console.log(this.columnsProject);
+                                    // this.columnsProject = [...new Set(this.columnsProject.filter(item=>item.dataIndex))]
+                                    var obj = {};
+                                    this.columnsProject = this.columnsProject.reduce(function(item, next) {
+                                        obj[next.dataIndex] ? '' : obj[next.dataIndex] = true && item.push(next);
+                                        return item;
+                                    }, []);
+                                    console.log(this.columnsProject)
+                                    this.changeColumn(this.columnsProject)
                                 }
 
-                                // console.log(this.columns)
+                                
                             }
+                            
+                        }else{
+                            this.changeColumn()
                         }
 
-                        this.changeColumn(this.columnsProject)
+
                     }
                 })
             },
 
             changeColumn(val) {
                 this.columnsProject = [...val]
-                if (this.columnsProject.length > this.columnsFixd.length && this.columnsProject.length < 8) {
+                if (this.columnsProject.length > this.columnsFixd.length && this.columnsProject.length <= this.columnsFixd.length) {
                     this.columnsProject.forEach((element, index) => {
                         if (index < this.columnsProject.length - 1) {
 
@@ -1091,7 +1117,7 @@
 
                     this.scrollX = 0
                 }
-                else if (this.columnsProject.length > 8) {
+                else if (this.columnsProject.length > this.columnsFixd.length) {
                     
                     this.columnsProject.forEach((element, index) => {
                         if (index < this.columnsFixd.length) {

+ 0 - 7
src/views/modules/stockWatch/modules/new-keepManage/new-keep-data.js

@@ -56,13 +56,6 @@
                 align: 'center',
                 
             },{
-                title: '有效素材数',
-                dataIndex: 'newEffectNum',
-                width: 150,
-                tip: '',
-                align: 'center',
-                
-            },{
                 title: '爆款素材数',
                 dataIndex: 'newHotNum',
                 width: 150,

+ 19 - 5
src/views/modules/stockWatch/modules/new-keepManage/personal-keepManage.vue

@@ -25,11 +25,11 @@
                     </div>
 
                         <div v-if="yestadyNum == 1" id="accountIndexEchartDay" ref="accountIndexEchartDay"
-                        style="width: 90%;height: 315px;margin: 0 auto;">
+                        style="width: 90%;height: 315px;margin: 0 auto;" :style="{ width: clientWidth * 0.75 - 48 - 24 + 'px' }">
 
                         </div>
                         <div v-else id="accountIndexEchart" ref="accountIndexEchart"
-                        style="width: 90%;height: 315px;margin: 0 auto;">
+                        style="width: 90%;height: 315px;margin: 0 auto;"  :style="{ width: clientWidth * 0.75 - 48 - 24 + 'px' }">
                         </div>
 
                    
@@ -49,7 +49,7 @@
                             <li>
                                 今日消耗: <span style="font-weight: bold;">{{todayCost | formatNum}}</span> 
                             </li>
-                            <li>
+                            <li  v-if="!!todayCompare">
                                 <span style="margin-left:20%;" v-if="todayCompare.indexOf('-') == 0">
                                     <img style=" width: 25px;height: 25px;" class="title-radio-img"
                                         src="@/assets/greendown.png" alt="">
@@ -299,6 +299,7 @@
                 userIdRank:'',
                 monthCost:'',
                 userName:'',
+                clientWidth: 0
             }
         },
         filters:{
@@ -315,12 +316,18 @@
             if (sessionStorage.getItem('personalUserId')) {
                 this.queryUserId = sessionStorage.getItem('personalUserId')
             }
+            this.clientWidth = document.documentElement.clientWidth - 224
             this.showColumn()
             this.getQueryNewlyData();
             this.personalData();
             this.getItemList();
             
         },
+        activated() {
+            this.$nextTick(() => {
+                this.clientWidth = document.documentElement.clientWidth - 224
+            })
+        },
         methods: {
             ...mapGetters([ 'userInfo']),
             // 个人数据
@@ -665,12 +672,19 @@
                         columns = columns.slice(this.columnsFixd.length)
                         this.columnsProject = [...this.columnsFixd, ...columns]
                     }
-
+                    var obj = {};
+                    this.columnsProject = this.columnsProject.reduce(function(item, next) {
+                        obj[next.dataIndex] ? '' : obj[next.dataIndex] = true && item.push(next);
+                        return item;
+                    }, []);
                     // console.log(this.columns)
+                    this.changeColumn(this.columnsProject)
                     }
+                }else{
+                    this.changeColumn()
                 }
 
-                this.changeColumn(this.columnsProject)
+                
                 }
             })
         },